Pythonでのselenium操作でブラウザを開くだけで落ちるのを回避する方法

seleniumでブラウザで開くだけで落ちる場合あります。

例えばFC2ブログのログイン画面などです。

エラーメッセージは

Traceback (most recent call last):
  File "***\test.py", line 179, in <module>
    webdv.get("読み込みたいURL")
  File "D:\python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 333, in get
    self.execute(Command.GET, {'url': url})
  File "D:\python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "D:\python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status
from unknown error: unexpected command response
  (Session info: chrome=104.0.5112.102)

こんな感じの物が出力されて停止されます。

そこで今回はこれを回避するために行った処理の忘備録です。

try~exceptで囲む

try:
    webdv.get(Path)
except:
    pass

これでエラーで止まる事はなくなります。

リロードして504 Gateway Timeoutとかを回避

ついでにサーバーが504エラーでブラウザがサイトを正しく表示できなかった時の対処方法です。

for zzz in range(3):
    try:
        webdv.get(Path)
        break
    except:
        pass
    try:
        time.sleep(30)
        webdv.refresh()
    except:
        pass

forループで複数回させて成功したらbreak
失敗した場合に時間をおいてリロードして再度開くを繰り返すように作ってあります。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする