Capybara + Selenium WebDriver + Chrome で E2E テストをしていて、下記のエラーが発生したので対応した。
Selenium::WebDriver::Error::UnknownError:
unknown error: unknown sessionId
(Session info: headless chrome=65.0.3325.162)
(Driver info: chromedriver=2.36.540469 (1881fd7f8641508feb5166b7cae561d87723cfa8),platform=Mac OS X 10.12.6 x86_64)
環境
- macOS Sierra(Mac OS X 10.12.6)
- Ruby 2.2.8(あっ...)
- capybara 2.6.2
- selenium-webdriver 3.10.0
- Google Chrome 65.0.3325.162
- ChromeDriver 2.36.540469
- Java 1.6.0_65
結論ファースト
ChromeDriver のバージョンを 2.35 にダウングレードさせたらエラーが解消した。ダウングレードの方法は下記。
試してみたバージョン
公式情報 https://chromedriver.storage.googleapis.com/2.37/notes.txt によると、ChromeDriver が対応する Chrome のバージョンは下記。
ChromeDriver | Chrome |
---|---|
2.37 | v64-66 |
2.36 | v63-65 |
2.35 | v62-64 |
2.34 | v61-63 |
なのだけれど、手元で試した限りでは下記の結果となった。同じテスト(ログインフォームに値を入れてサブミットする)なのだけれど、発生したエラーが異なった。
ChromeDriver | Chrome v65 |
---|---|
2.37 | NG(unknown error: unknown sessionId) |
2.36 | NG(unknown error: unknown sessionId) |
2.35 | OK |
2.34 | NG(unknown error: call function result missing 'value') |
参考
不具合の内容は下記のバグレポート参照。
- 2333 - WebDriverException: unknown error: cannot determine loading status from unknown error: unknown sessionId - chromedriver - Monorail
- WebDriverException: unknown error: cannot determine loading status from unknown error: unknown sessionId ・ Issue #5609 ・ SeleniumHQ/selenium
下記でも同じような不具合が報告されていて、みんな ChromeDriver と Chrome のバージョンの組み合わせには苦労しているんだなあという印象。