invalid session id
laravelのDuskを利用して長~いLPのスクリーンショットを撮ろうとしたら、Facebook\WebDriver\Exception\InvalidSessionIdException: invalid session id
エラーになりました。
1) Tests\Browser\ScreenShotTest::testSc
Facebook\WebDriver\Exception\InvalidSessionIdException: invalid session id
/var/www/html/vendor/php-webdriver/webdriver/lib/Exception/WebDriverException.php:107
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/HttpCommandExecutor.php:372
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/RemoteWebDriver.php:585
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/RemoteExecuteMethod.php:27
/var/www/html/vendor/php-webdriver/webdriver/lib/WebDriverOptions.php:166
/var/www/html/vendor/laravel/dusk/src/Browser.php:408
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:164
/var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php:242
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:165
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:81
/var/www/html/tests/Browser/AspLp/ScreenShotTest.php:55
Caused by
Facebook\WebDriver\Exception\UnknownErrorException: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
(Session info: headless chrome=98.0.4758.102)
/var/www/html/vendor/php-webdriver/webdriver/lib/Exception/WebDriverException.php:139
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/HttpCommandExecutor.php:372
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/RemoteWebDriver.php:585
/var/www/html/vendor/php-webdriver/webdriver/lib/Remote/RemoteWebDriver.php:367
/var/www/html/vendor/laravel/dusk/src/Browser.php:394
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:149
/var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php:242
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:150
/var/www/html/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:71
/var/www/html/tests/Browser/AspLp/ScreenShotTest.php:55
試行錯誤
色々試して、
・ChromeDriverを利用しているので、ChromeOptionsでブラウザサイズを変更してみたり。 (こんなやつ--window-size=1280,720
)
・ChromeDriverのバージョンが合っていないとか調べるとでてくるので、バージョンを合わせようとしてみたり。
ですが効果なし。
こちらで議論されていて、解決していないっぽい。。
https://groups.google.com/g/chromedriver-users/c/Z_CaHJTJnLw
その後も試行錯誤、
小さい画面のスクリーンショットなら成功することと、
こちらのサイトを参考にしまして、
https://thecurve.io/dealing-with-cryptic-seleniumwebdrivererrorinvalidsessioniderror-errors/
共有メモリが足りていないことだとあたりを付けて、docker-compose.yml
に以下を追加。
version : "3"
services:
selenium:
shm_size: '2gb' # 追加
...
これが成功しました!
追加前のseleniumコンテナのメモリをモニター
だいたい674MBがピークでその後テストはエラーになってました。
追加後のseleniumコンテナのメモリをモニター
2.1GBになって、やばっ!と思ったのですが、なんとか成功したようです。
もう少し増やしてみてもいいかも。
無事に、長~いLPのスクリーンショットが撮れました。