2

私はアイデアが不足しています。Selenium テストで、含まれているテキスト (「セキュリティ管理者」) に基づいて div を特定しました。残念ながら、この div には他に 2 つの div が含まれています。例を参照してください。

<div class="rich-stglpanel-marker">
    <div class="rich-stglpnl-marker" id="j_id194:j_id198:2:j_id199_switch_on" style="display: none"></div>
    <div class="rich-stglpnl-marker" id="j_id194:j_id198:2:j_id199_switch_off"></div>
    security administrator 
</div>
<div class="rich-stglpanel-marker">
    <div class="rich-stglpnl-marker" id="j_id194:j_id198:2:j_id199_switch_on" style="display: none"></div>
    <div class="rich-stglpnl-marker" id="j_id194:j_id198:2:j_id199_switch_off"></div>
    technical administrator 
</div>
... and so on

私はその式を試しました:

//div[text()='security administrator']
//div[text()='security administrator ']
//div[text()='security administrator&nbsp;']
//div[text()='security administrator${nbsp}'] (this is a special hack from selenium)

何も機能しません。何か案は?

前もって感謝します。

4

3 に答える 3

5

これで試してみてください:

//div[contains(.,'security administrator')]
System.out.println(driver.findElementByXPath("//div[contains(.,'security adm')]").getText()) 

セキュリティ管理者をくれた

于 2012-12-07T18:02:49.303 に答える
0

これを試して

//div[@class='rich-stglpanel-marker']

于 2012-12-07T16:23:06.643 に答える
0

これを試して://div[@class='rich-stglpanel-marker' and text()!='']

編集

ついに手に入れました!

これを使って://div[@class='rich-stglpanel-marker' and normalize-space(div[last()]/following-sibling::text())='security administrator']

この状況では、テキスト「セキュリティ管理者」は、最初の div ノードの唯一のテキスト値としてではなく、ノードとしてカウントされると//div/text()思います。そのため、検索しているテキストが後に続く複数の戻り行が表示されます。 、またnormalize-space()、 、translate()、またはのようなものを適用して結果contains()div/text()受け取ることができない理由。しかし、テキスト ノードには名前がないため、理解するのがファンキーな XPath になります。そのため、可能な限り最も近い兄弟ノードに移動することが、私が考えることができる唯一のオプションでした。

于 2012-12-07T16:39:58.903 に答える