
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
失敗した場合に時間をおいてリロードして再度開くを繰り返すように作ってあります。