W3c webdirverの公式ドキュメント では、ロケーション戦略は次のように明記されています。
State Keyword
CSS selector "css selector"
Link text selector "link text"
Partial link text selector "partial link text"
Tag name "tag name"
XPath selector "xpath"
ただし、 Seleniumのワイヤプロトコル は許可されます。
class name
css selector
id
name
link text
partial link text
tag name
xpath
THEORYでは、Seleniumのドキュメントは廃止され、「実際の」ストーリーは新しいスペックドキュメントに含まれています。しかしながら...
最新のChrome独自のWebdriverでいくつかのテストを実行したところ、name
とclass name
両方とも機能します。ただし、仕様には含まれていません。
Chromiumの問題については、公式のWebdriver仕様のみを実装することを読んだことを覚えています。
さて:私はknow「仕様が常に100%続くとは限らない」などの一般的な答えなどです。しかし、私が知りたいことは次のとおりです。
はい、あなたはそれを正しく見ました。
現在のようにWebDriver - W3C Candidate Recommendation
Locator Strategies
参加するのは次のとおりです。
"css selector"
:CSSセレクタ"link text"
:リンクテキストセレクター"partial link text"
:部分リンクテキストセレクター"tag name"
:タグ名"xpath"
:XPathセレクタースナップショット:
ただし、 JsonWireProtocol
は、Locatorをサポートするために使用されていました戦略は以下にリストされていますが、現在のドキュメントでは、Statusは[〜#〜] obsolete [〜 #〜]:
class name
:クラス名に検索値が含まれる要素を返します。複合クラス名は許可されていません。css selector
:CSSセレクタに一致する要素を返します。id
:ID属性が検索値と一致する要素を返します。name
:NAME属性が検索値と一致する要素を返します。link text
:表示されているテキストが検索値と一致するアンカー要素を返します。partial link text
:表示テキストが検索値と部分的に一致するアンカー要素を返します。tag name
:タグ名が検索値と一致する要素を返します。xpath
:XPath式に一致する要素を返します。提供されたXPath式は「そのまま」サーバーに適用する必要があります。式が要素のルートに関連していない場合、サーバーはそれを変更しないでください。その結果、XPathクエリは、ルート要素のサブツリーに含まれていない要素を返す場合があります。スナップショット:
変更は、それぞれのclient特定のバインディングを介して伝播されました。 Selenium-Java
クライアントは クライアントコード であり、ユーザーのためにスイッチケースが機能しています。
switch (using) {
case "class name":
toReturn.put("using", "css selector");
toReturn.put("value", "." + cssEscape(value));
break;
case "id":
toReturn.put("using", "css selector");
toReturn.put("value", "#" + cssEscape(value));
break;
case "link text":
// Do nothing
break;
case "name":
toReturn.put("using", "css selector");
toReturn.put("value", "*[name='" + value + "']");
break;
case "partial link text":
// Do nothing
break;
case "tag name":
toReturn.put("using", "css selector");
toReturn.put("value", cssEscape(value));
break;
case "xpath":
// Do nothing
break;
}
return toReturn;
スナップショット:
さて、あなたの質問は、なぜW3C Specs
およびclients
内。 #1042 によると、WebDriver Contributorsからの回答は次のように非常に単純でした:
This keeps the specification simple as these can be implemented using the CSS selector, which maps down to querySelector/querySelectorAll.