0

これらのボタンは両方ともほぼ同じIDを持っています(IDの番号は変更される可能性があるため、信頼できません)両方とも同じクラスを持っています両方は同じ親の下にありますスパンを除いて何も違いはありません

「Seleniumの使用」でイベントを見つけてビルドしようとしているアプリケーションのすべてのUI要素は、以下の部分のようになっています...

誰かがxpathでこれらのボタンをどのように見つけることができるか提案できますか?

<div id="button-1749" class="x-btn x-box-item x-toolbar-item x-btn-default-toolbar-  small x-noicon x-btn-noicon x-btn-default-toolbar-small-noicon x-item-disabled x-disabled x-btn-disabled x-btn-default-toolbar-small-disabled" style="margin: 0pt; left: 1563px; top: 0px;">
<em id="button-1749-btnWrap" class="">
<button id="button-1749-btnEl" class="x-btn-center" autocomplete="off" role="button"    hidefocus="true" type="button" aria-disabled="true" disabled="">
<span id="button-1749-btnInnerEl" class="x-btn-inner" style="">Delete Selected</span>
<span id="button-1749-btnIconEl" class="x-btn-icon x-hide-display">&nbsp;</span>
</button>
</em>
</div>
<div id="button-1750" class="x-btn x-box-item x-toolbar-item x-btn-default-toolbar-small x-noicon x-btn-noicon x-btn-default-toolbar-small-noicon" style="margin: 0pt; left: 1654px; top: 0px;">
<em id="button-1750-btnWrap" class="">
<button id="button-1750-btnEl" class="x-btn-center" autocomplete="off" role="button"    tabindex="1" hidefocus="true" type="button">
<span id="button-1750-btnInnerEl" class="x-btn-inner" style="">New Title</span>
<span id="button-1750-btnIconEl" class="x-btn-icon x-hide-display">&nbsp;</span>
</button>
</em>
</div>
4

5 に答える 5

0

GetElements(GetElementではなく)を使用することもできます。これにより、検索条件に一致する要素のリストが返されます。次に、ボタンがページに表示される順序が変更されない場合は、このリストを使用して、関連付けられたインデックスを使用して、必要なボタンに毎回アクセスできます。

例えば。

ReadOnlyCollection<IWebElement> buttons = driver.FindElements(By.XPath("YOUR XPATH HERE"));
//If it's the 3rd button that matches your criteria
buttons[2].Click(); //or whatever you want with this button :)
于 2012-04-11T23:58:29.130 に答える
0

descendent特定のdivの下の要素を検索する場合は、 axisを使用できます。

例:

//div[@id='your div']/descendant::button[contains(@class, 'x-btn-center')]/span[text()='Delete Selected']"      

これにより、IDが「yourdiv」のdiv内にある「DeletedSelected」ボタンが表示されます。

于 2012-04-12T01:03:00.067 に答える
0

私はこれがあなたの場合にうまくいくはずだと思います:

locator = driver.find_element_by_xpath("//div/em/button/span[contains(text(),'Delete Selected')]")

別の要素の場合にも同様の方法を実行できます。

于 2012-04-12T01:51:37.603 に答える
0

xpathは質問ごとに望ましいロケーターですが、xpathとcssセレクターの間には速度の違いが文書化されています。1つの例を次に示します。http://saucelabs.com/blog/index.php/2011/05/why-css-locators-are -the-way-to-go-vs-xpath/。cssセレクターを介してこれらの要素を見つけるには、次のPythonの例を使用します

els = driver.find_elements_by_css_selector("button[id^=button]
for eachel in els:
   eachel.click()
于 2012-04-12T02:20:22.193 に答える
0

2つの要素のxpathが同じ場合は、独自のxpathを作成する必要があります

driver.findElement(By.xpath("//span[contains(text),'New Title')]")).click;
于 2016-05-18T17:38:42.227 に答える