鼻歌まじりにWEBクロールしていて、突如の悪魔の囁き...
Selenium message:unknown error: session deleted because of page crash from unknown error:
cannot determine loading status
げ、なんだよこれ。
変な書き方してたかな...とまずは自分を疑いコードを見直すも、
どこもおかしい所は無い。
【追記 2019/7/11】
#まずは解決策
docker run -it --shm-size=1024m ...
/dev/shm の容量が足りないこと、dockerのデフォルトが64MBであることが原因なので、
docker runの時に指定してあげるとどのホストOSでも動くと思います。(Macで確認)
Linux hostであれば下記の解決策、
"-v /dev/shm:/dev/shm" コンテナ内からホスト側の/dev/shm にマウントしてしまうのが一番メモリのムダが無いです。
以下は以前のバージョンです:
...えー...
てわけでエラーメッセージでググります:
これだ!
SO先生偉い!
##unknown error: session deleted because of page crash from unknown error: cannot determine loading status from tab crashed with ChromeDriver Selenium
原因としては
「dockerコンテナ内で起動すると、/dev/shm が凄く小さいので溢れて落ちることがある」
のだそうで。
ここでDebanjanBさんより示されている対策は3つ:
#ホストの /dev/shm を使う - docker run に以下を追加
-v /dev/shm:/dev/shm
#/dev/shm を大きくしてリマウント: コンテナ内から
sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm
#chrome_optionsに以下のどちらかを追加:
# sandboxを無効に (あれ?すでにやってるけど)
chrome_options.add_argument('--no-sandbox')
# shm を無効に (遅くなるとのこと)
chrome_options.add_argument('--disable-dev-shm-usage')
自分は -v /dev/shm:/dev/shm を足して起動する方法で解決しました!
(Linuxホストじゃないと使えないかも?)
逆に二番目はエラーで実行出来ませんでした。
3番めは試していません。
もし同じエラーで困った方が居たら参考になれば幸いです。