2

SeleniumDOMロケーターのセマンティクスを理解しようとしています。ドキュメントには、基本的にターゲット要素を取得するために評価されるJavascript式であると記載されています。しかし、たとえばdocument.div[0].button[2]これらの例から)評価しようとすると、次のようになりError: TypeError: document.div is undefinedます。

その例は無効ですか?これは、最近のブラウザーではサポートされなくなったが、下位互換性のためにSeleniumによってエミュレートされたDOMをナビゲートする古い方法ですか?この構文がどのように機能するかについてのドキュメントはありますか?

私はDOMロケーターを使用しようとしていないことに注意してください-CSSやid、さらにはXPathを使用する方がクリーンであることをよく知っています。ただし、WebDriverで使用するために一般的なDOMロケーターをXPathロケーターに変換できるコードを記述できるように、それらのセマンティクスを理解する必要があります。

4

2 に答える 2

3

DOMロケーターについての私の理解を共有したいと思います。いくつかのDOMの略語があります。

gEBI - getElementById
gEBTN - getElementsByTagName

XpathロケーターとcssセレクターはSeleniumWebドライバーのコンテキストで使用され、DOMロケーターはjavascriptのコンテキストで使用されます(つまり、DOMロケーターで要素を適切に検索するには、JavascriptExecutor最初にDOMロケーターをラップする必要があります)

使用例:

Whole web page         document.documentElement
Whole web page body    document.body
Element <E> by absolute reference     document.body.childNodes[i]...childNodes[j]
Element <E> by relative reference     document.gEBTN('E')[0]   

document.getElementById('TestTable')
First <E> child     document.getEBTN('E')[0]
Last <E> child      document.gEBTN(E)[document.gEBTN(E).length-1]   

Second <E> child              document.getEBTN('E')[1]
Second-to-last <E> child      document.gEBTN(E)[document.gEBTN(E).length-2]
Parent of element <E>         document.gEBTN('E')[0].parentNode   

Descendant <E> of element with id I using specific path   
document.gEBI('I')…gEBTN('E')[0]      

Descendant <E> of element with id I using unspecified path
document.gEBI('I').gEBTN('E')[0]

したがって、この作業を取得したい場合は、jsExecutorを呼び出す必要があります。それは次のようなものです:

JavascriptExecutor js = (JavascriptExecutor) driver;
String script = "return document.getElementById('example');";
WebElement exampleDiv = (WebElement) js.executeScript(script);
exampleDiv.getText(); 

また、あなたの問題に関して、私はここで説明の一部を見つけました

もう少し明確になることを願っています)

于 2012-10-05T09:50:24.223 に答える
2

SeleniumのいくつかのDOMコマンドの概要は次のとおりです。

http://www.simple-talk.com/dotnet/.net-framework/xpath,-css,-dom-and-selenium-the-rosetta-stone/

他のセレクターについても多くのことを説明していますが、他のセレクターと比較して、コマンドがどのように見えるかを確認するのに役立つ場合があります。それは基本的にeugeneが上で話したことのPDFファイルを提供します。

于 2012-10-07T21:40:56.990 に答える