2012-09-11 56 views
3

下面是HTML:如何使用Java中的WebDriver中的XPATH單擊此元素?

<li> 
<input type="checkbox" checked="" name="selectedMstrPrivGroupList[9].mstrAuthorities[0].status"/> 
Add Dexter 
</li> 

這怎麼可能元素被點擊的webdriver的?這是一個複選框。我想使用XPath,因爲我在頁面中有近30個複選框。這樣我就可以創建一個通用方法並僅傳遞WebElement。我嘗試了以下,但沒有奏效。

Driver.findElement(By.xpath("//input[contains(.,'Add Dexter')]")).click(); 
+0

爲什麼不用findElements做到這一點?另一種選擇可能是cssSelectors – Tarken

+0

另一種選擇,但它們不是同一回事。請正確標記您的問題。 – BoltClock

回答

6

如果旁邊的複選框「添加德克斯特」是你想要什麼,點擊頁面上,你可以使用:

Driver.findElement(By.xpath("//li[contains(.,'Add Dexter')]//input[@type='checkbox']")).click(); 
+0

,如果你想使用泛型方法,''// li [contains(。,'「+ someString +」')] // input [@ type ='checkbox']「'should be working。 – Rajiv

+0

百萬感謝您的幫助...這個工程太棒了! – Mike

+0

很高興幫助。你能回答這個問題嗎? – Rajiv

1

這有什麼一個:

Driver.findElement(By.xpath("//input[@name='selectedMstrPrivGroupList[9].mstrAuthorities[0].status']")).click(); 
+0

感謝您的快速響應...這在這種情況下工作,但我特別不想使用名稱屬性。原因:頁面是動態的,相關的文本經常變化...所以,我正在尋找一些東西,我可以點擊複選框及其相關文本......再次感謝! – Mike

+0

這對我有用..謝謝你的幫助.. Driver.findElement(By.xpath(「// li [contains(。,'Add Dexter')] // input [@ type ='checkbox']」 ))點擊(); – Mike

1

你可以這樣用, driver.findElement(By.xpath("//li[contains(text(),'Add Dexter')]")).click()

1

你可以用xpath來點擊元素如下圖所示:

driver.findElement(By.xpath("//input[text()='Add Dexter']")).click(); 

您也可以點擊該元素的使用cssSelector代替的XPath如下:

driver.findElement(By.cssSelector("input:contains(^Add Dexter$)")).click(); 

注:CssPath/CssSelector比XPath的更快。所以在大多數情況下最好使用cssSelector而不是xpath。

相關問題