ブラウザ表示とヘッダレスモードで動作が異なる場合の切り分けについて
背景:
selenium初心者です
あるサイトの情報取得のためにseleniumを利用しているのですが
ブラウザ表示時には正常に情報取得ができていたにも関わらず、ヘッダレス モードで実行した場合には下記のエラーが発生し、情報取得が不可となりました
質問内容:
seleniumブラウザ表示時とヘッダレス動作時に挙動が異なる場合の切り分け方法について
皆さんはどのように行われているのでしょうか。(当方ではエラー発生時のスクリーンショット取得くらいしか思い付かず、切り分けが難航しております)
環境:
Python 3.6
Selenium 3.141.0
Chrome Driver 74.0.3729.108
補足:
エラー時のスクリーンショットを確認したところ、ヘッダレス 動作時には
商品ページにアクセスしようとした際に、ログインページにリダイレクトされていました。
そのため、リダイレクトした際には初回ログイン成功時のcookieを追加するようにしたのですが
上手く情報が取得できる場合とそうでない場合がありました。(初学者となり、この方法が間違っているかも知れませんが、その点についても誤りがあればご指摘願います。)
コード一部抜粋:
for item_link in item_links:
try:
print('open {0}'.format(item_link))
self.browser.get(item_link)
if self.browser.current_url != item_link:
self.browser.get(item_link)
WebDriverWait(self.browser, 10).until(
EC.presence_of_element_located((By.ID, 'container_img')))
store_data.append(_get_product_info(item_link))
except:
#ログインページにリダイレクトした場合にcookieを追加
print('[ERROR02] exec retry')
self.browser = cookie.addCookie(self.browser)
print('open {0}'.format(item_link))
self.browser.get(item_link)
print(self.browser.title)
WebDriverWait(self.browser, 10).until(
EC.presence_of_element_located((By.ID, 'container_img')))
store_data.append(_get_product_info(item_link))
print(store_data)
エラー内容:
[ERROR02] exec retry
Traceback (most recent call last):
File "/03_hira/src/pages/StyleIsNow.py", line 197, in read_category_page
self.browser.get(item_link)
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
self.execute(Command.GET, {'url': url})
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout
(Session info: headless chrome=74.0.3729.108)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.4 x86_64)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/03_hira/src/pages/StyleIsNow.py", line 239, in <module>
style.read_category_page(sex_category, product_category)
File "/03_hira/src/pages/StyleIsNow.py", line 207, in read_category_page
self.browser = cookie.addCookie(self.browser)
File "/03_hira/src/utils/Cookie.py", line 32, in addCookie
self.browser.add_cookie(cookie)
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 894, in add_cookie
self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout
(Session info: headless chrome=74.0.3729.108)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.4 x86_64)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/03_hira/src/pages/StyleIsNow.py", line 242, in <module>
browser.quit()
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1055, in save_screenshot
return self.get_screenshot_as_file(filename)
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1032, in get_screenshot_as_file
png = self.get_screenshot_as_png()
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1064, in get_screenshot_as_png
return base64.b64decode(self.get_screenshot_as_base64().encode('ascii'))
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1074, in get_screenshot_as_base64
return self.execute(Command.SCREENSHOT)['value']
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Users/ipap/.pyenv/versions/3.6.5/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout
(Session info: headless chrome=74.0.3729.108)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.4 x86_64)