2

を使用して検索を実行した後POST /session/{session id}/element、Chrome webdriver からこれを取得します。

{ sessionId: '3241e7da289f4feb19c1f55dfc87024b',
  status: 0,
  value: { ELEMENT: '0.12239552668870868-1' } }

これが要求される仕様か?

大文字で「ELEMENT」とはっきりと書かれている箇所がどこにも見つからなかったので質問しています。仕様で見つけることができるのは、呼び出されたキーvalueが設定されていることだけです(つまり、次のように設定されています{ ELEMENT: '0.12239552668870868-1' }

  • 他のブラウザーの Web ドライバーから常にこの応答を期待できますか? つまりstatussessionId常に返されますか?

  • それ{ ELEMENT: '0.12239552668870868-1' }がクロムが物体を構成する方法ですか?または、これはどのWebドライバーにも当てはまりますか? そうではありませんが、他の Web ドライバーは何を返しますか?

4

2 に答える 2

0

これと同じ問題が発生したばかりで、Selenium サーバーと関連するイメージの 3.5 付近で変更が行われたことがわかりました。

このコメントは、変更を理解し、変更されたバージョンを特定するのに最も具体的であることがわかりました: https://github.com/SeleniumHQ/selenium/issues/4773#issuecomment-333092149

私は selenium/node-firefox:3.4.0-actinium のような Docker イメージを使用しており、v3.4.0ELEMENTは古い JsonWire 仕様からキーを返し、v3.9 はelement-6066-11e4-a52e-4f735466cecf新しい WebDriver 仕様からフォーマットを返すことがわかりました。(その間に他のバージョンをチェックしていません)。

これは WebDriver への段階的な移行の一部ですが、この重大な変更が 3.5 (またはその前後) で行われ、v3.0.0 ではなく、誰もが問題なく使用できるようになったことは少し混乱しています。

また、現在 Firefox チームによって作成されている Gecko や Chrome などの「ネイティブ」ドライバーには、さまざまな開発ロードマップがあるため、実装が混在しています。

さらに、私が使用しているクライアント側ライブラリはまだ新しい応答を実装していないことがわかったので、しばらく待つ必要があります (または自分でパッチを適用して PR します)。他のクライアントでも同様の会話を見たことがあります ( 2 年前の Java クライアントなど)。

Element 応答の 2 つのプロトコル定義の違いを確認できます。

https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#webelement-json-object

https://www.w3.org/TR/webdriver/#elements

于 2018-02-16T23:47:43.003 に答える