5

IE7とIE8とのみ互換性のあるアプリケーションに取り組んでいます。理由はわかりませんでしたが、IEで要素を特定する際にXPathではなくCSSを使用することを提案する人もいました。Seleniumの公式サイトにアクセスしたとき。メッセージを読みました

WebDriverは、可能な限りブラウザのネイティブXPath機能を使用します。ネイティブXPathをサポートしていないブラウザーでは、独自の実装を提供しています。さまざまなxpathエンジンの違いを認識していない限り、これにより予期しない動作が発生する可能性があります。

さまざまなxpathエンジンの違いをどこで見つけることができるか、どのような状況でCSSを使用する必要があるか、特にIEを使用している場合はどのXPathを使用するかを知りたいです。ありがとう。

4

4 に答える 4

13

ソースラボからのアシュリーウィルソンのレポートによると:

長所

  1. 彼らはより速いです
  2. 彼らはより読みやすいです
  3. CSS は jQuery の検索戦略です
  4. とにかく、他の誰も XPATH を使用していません!

少し古いですが、数字は次のとおりです。

コーズラボのサイトより画像

個人的には、(2)のステートメントについて議論しますが、残りは同意する必要があります。

短所

  1. 「ボトムアップ」ナビゲーションはありません。XPathにはelem\..\another_elem
  2. シズルは注射されていますか?または、ブラウザの CSS ロケーター パーサーを使用しますか? ブラウザによって異なり、矛盾があります。
于 2013-01-04T21:23:12.660 に答える
4

IE で XPath よりも CSS セレクターを提案する最大の理由は、パフォーマンスです。IE は、Firefox や Chrome のようにネイティブの XPath-over-HTML オプションを提供していません。ただし、IE ドライバーで使用される JavaScript のみの XPath エンジン実装よりも常に高速なネイティブ CSS セレクター エンジンを提供します。そして、パフォーマンスの比較は近くさえありません。CSS セレクターよりも XPath ロケーターの方が 1 桁も遅いことを測定したことがあります (ただし、現時点では引用を見つけることはできません)。これは、IE J​​avaScript エンジンが 32 ビット IE9 で導入された Chakra JavaScript エンジンよりも大幅に遅かった IE 9 より前のバージョンに特に当てはまります。

于 2013-01-03T12:55:17.957 に答える
0

IE だけでなく、FF や Chrome でも、CSS ロケーターを使用するのが最適なオプションです。また、単純な要素を見つけるためにページ全体を解析する必要があるため、xpath は常に最悪の選択です。テストでパフォーマンスが必要で、それを回避できる場合は、xpath を使用してください。

また、pageObjects を使用している場合は、cacheLookup を使用することを強くお勧めします。これにより、要素が 1 回だけ検索されます。

@CacheLookup
@FindBy(id="doLogin")
private WebElement loginButton;

個人的には以下のようにしています。

  • 要素に css クラスがある場合は、このロケーターを使用します
  • 要素に名前または ID がある場合は、このロケーターを使用します
  • 上記のいずれも存在せず、linkText または別のロケーターを使用できない場合は、xpath を使用してください。
于 2013-01-07T11:29:06.397 に答える