にむかひて

WebDriverClient.ProtocolMismatchError

%WebDriverClient.ProtocolMismatchError{actual_protocol: :jwp, expected_protocol: :w3c, ~
  • protocol: jwpWebDriverClient.find_element した際にエラー
  • seleniumはresponseを返してきているが、パースした際にWebDriverClientにてprotocolが違うと評価している
    • まず指定したprotocolでパースして、ダメなら次に他のprotocolでパースして、うまくいけばprotocolが違う、という判定
  • seleniumのresponseが変? debug: true にしてレスポンスを覗く
{
  "state": "success",
  "sessionId": null,
  "class": "org.openqa.selenium.remote.Response",
  "value": ~,
  "status": 0
}
  • protocol: jwpだと”value”が配列で、1つずつが”ELEMENT”というキーになっていることが前提での処理になっている様子
  • => このルールになっていなかったのでエラーになっている

  • 知識が足りない…
  • むりくりだけれど、事前にprotocol: w3cにしてかわす

session = Map.update!(session, :config, & WebDriverClient.Config.put_protocol(&1, :w3c))

サイト内検索