2013-11-04 71 views
0

我需要從UI上的列表中選擇元素應用程序。此元素的HTML代碼(HTML中我有10種這樣的元素)是:如何選擇由腳本生成的元素硒webdriver

<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"/> 

我從來沒有這樣的劇本工作,我怎麼能找到使用webdriver的硒元素等?

我已經試過

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

你的問題不清楚。 – plalx

+0

用明確的代碼和示例發佈您的問題。 –

回答

1

請出示符合您的XPath(這裏是yui-gen0等?)

從你可能想避免您所提供的信息,一些問題HTML代碼:

  • 嘗試避免採用div [6],R [12],使用有意義的事情,而不是指數
  • 不要使用yui-gen0如果它是自動生成的
  • 保持HTML ID唯一,如id="ItemM"。如果它們是唯一的,用它們直接

我建議嘗試以下方法(我們需要你,以避免採用div [6],R [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(); 
+0

@khris:對此有任何意見?它對你有用嗎? –

相關問題