0

UI のリストから要素APPLICATIONを選択する必要があります。この要素のhtmlコード(htmlにはそのような要素が10あります)は次のとおりです。

<tr id="4676856" class="menuItem" orientation="vertical" collectionid="tr4" radioid="12">
<td id="ItemL" class="left" data-click="[["runScript",["switchApplication('myapp')"]]]" data-ctl="nav">
<div class="menuRB"/>
</td>
<td id="ItemM" class="middleBack" tabindex="0" data-click="[["runScript",["switchApplication('myapp')"]]]"     data-ctl="nav">**APPLICATION**</td>
<td id="ItemR" class="rightEdge" data-click="[["runScript",["switchApplication('myapp')"]]]" data-ctl="nav"/>

そのようなスクリプトを使用したことがないのですが、selenium webdriver を使用してそのような要素を見つけるにはどうすればよいですか?

私が試してみました

driver.findElement(By.xpath(".//*[@id='yui-gen0']/div[6]/table/tbody/tr[12]/td[1]")).click();
4

1 に答える 1

1

XPath に一致する HTML コードを表示してください (場所yui-gen0などは?)

あなたが提供した情報から、回避したい問題がいくつかあります:

  • div[6]、tr[12] の使用を避け、インデックスの代わりに意味のあるものを使用してください
  • yui-gen0自動生成された場合は使用しないでください
  • のように、HTML ID を一意に保ちますid="ItemM"。それらが一意である場合は、それらを直接使用してください

以下を試すことをお勧めします (div[6]、tr[12] の使用を避けるために、より多くの HTML を表示する必要があります):

// find by text '**APPLICATION**'
driver.findElement(By.xpath(".//*[@id='yui-gen0']/div[6]/table/tbody/tr[12]/td[text()='**APPLICATION**']")).click();

// find by class name (if it's the only one)
driver.findElement(By.xpath(".//*[@id='yui-gen0']/div[6]/table/tbody/tr[12]/td[@class='middleBack']")).click();

// find by class name (if there are others)
driver.findElement(By.xpath(".//*[@id='yui-gen0']/div[6]/table/tbody/tr[12]/td[contains(@class, 'middleBack')]")).click();

// find by id, which should be unique, if it's not, your HTML is bad
driver.findElement(By.xpath(".//*[@id='ItemM']")).click();
于 2013-11-04T22:03:52.267 に答える