にむかひて

WebDriverClient :session_not_created

経過1

(MatchError) no match of right hand side value: {:error, %WebDriverClient.WebDriverError{message: "a WebDriver error occurred: :session_not_created\n", reason: :session_not_created}}
  • web_driver_client hex を試してみたときのエラー
  • githubの記述例をもとに下記を実行したときに返ってきた
{:ok, session} =
  "http://browser:4444/wd/hub"
  |> WebDriverClient.Config.build(protocol: :w3c)
  |> WebDriverClient.start_session(%{"capabilities" => %{}})
  • browser:4444 は、dockerコンテナ selenium/standalone-chrome:3 が宛先
  • WebDriverClient.Config.build には debug: true を指定できるのでエラーを探る
    • 続く…

経過2

"org.openqa.selenium.SessionNotCreatedException: Unable to create session from ~略
  • WebDriverClient.Config.builddebug: true を指定して実行し、browser:4444/wd/hub から返ってきたエラー
  • 適当にpythonコードを拾ってきて browser:4444/wd/hub を使ったがこっちでは使用できた
    • pythonのサンプルコードを読むに desiredCapability なるオプションを指定している
  • => desiredCapability をつけたら通った。chromeであることを伝える必要があるということか (?)

ひとまず動作確認できたコード

capabilities = %{
  loadImages: false,
  takesScreenshot: true,
  cssSelectorsEnabled: true,
  javascriptEnabled: true,
  chromeOptions: %{
    args: [
      "--no-sandbox",
      "window-size=1280,800",
      "--disable-gpu",
      "--headless",
      "--fullscreen",
    ]
  }
}

desired_capabilities = %{
  "browserName" => "chrome",
  "version" => "",
  "platform" => "ANY"
}

{:ok, session} =
  "http://browser:4444/wd/hub"
  |> WebDriverClient.Config.build(protocol: :jwp, debug: true)
  |> WebDriverClient.start_session(%{
    "desiredCapabilities" => desired_capabilities,
    "capabilities" => capabilities,
  })

サイト内検索