This version of ChromeDriver only supports Chrome version
ChromeDriverがサポートしていないserverless-chromeを使用している。
notes.txtに、対応するChromeDriverのversionが書いてあるので合わせる。
ChromeDriver
ChromeDriver のバージョンが 73.0.3683.20 である場合、Chrome のバージョンが73.0.3683のものに対して全て対応する(参考)
Headless-Chromeの場合は…どうなんだろう
Layersを使おうとしてUnnable to import module
Layersにアップロードすると/opt配下に展開される。公式ドキュメント
pythonの場合を例にとると、/opt/python 配下がimportの参照範囲になるので、アップロードされたzipを展開したときに
/opt/python/selenium の様になっていないと参照できず発生する。
windowsでzip圧縮して'chromedriver' executable may have wrong permissions
一番下のコメント
windowsがlinuxのファイル権限を扱えないから発生する?
解決策はlinuxでzip圧縮してLayersやS3にアップロードする。
参考:dockerでaws cliが使える環境を作る
"errorMessage": "Message: Service /tmp/bin/chromedriver unexpectedly exited. Status code was: 127\n", "errorType": "WebDriverException"
何か色々発生する条件がある様子。chromedriver_binaryをインポートすればいいとか、libconf2が足りないとか。
ローカルにlinuxの環境を作って、chromedriverを単独で実行してみると見えてくるかもしれない。
libnss3.so libX11.soが無い
chromedriver2.37 Win、headless-chromev1.0.0.37 stableの話。
chromedriverを、dockerのcentos:8イメージを使ってローカルで単独実行した時に発生。ライブラリが足りないらしい。
サードパーティのバイナリをAWS Lambdaで実行可能にするには、ソースコードをzipに固めるときに一緒に入れてしまえばよい。
もしくはLambda LayersにアップロードするだけでもOK。(参考)
どちらのsoファイルも直接ダウンロードできなかったので、yum installしてから取り出した。
yum install libnss3-dev libX11-devel
した後、
pm -ql libnss3-dev
pm -ql libX11-devel
でインストール先を探し、cpコマンドでコピーする
Check failed: InitDefaultFont(). Could not find the default font
chromedriver2.37 Win、headless-chromev1.0.0.37 stableの話。
Dockerのcentos:8で、chromedriverをローカルで単独実行した時、
chromedriverがあるフォルダに作成されたchrome_debug.logに出力されていた。
全く解決策が見えなかったが、Python3.8で実行していたAWS Lambdaを、Python3.7に変えたら正常に動いた。
番外編 <input type="time">にsend_keysしたい時は"HH:MM AM"みたいにする
DockerでローカルにLambda環境を作って動作確認をしたときは、
<input type="time" id="start">
driver.find_element_by_id('start').send_keys('13:00')
で入力が可能であるが、本番AWS Lambdaでこのコードを実行すると値が設定されない。
driver.find_element_by_id('start').send_keys('13:00 PM')
とすると入力できる。
参考:一番下のコメント