2013-04-03 147 views
7

鑑於selenium xpath,如何選擇表中最後一個匹配元素?

<table> 
    <tr> 
    <td>service1</td> 
    </tr> 
    <tr> 
    <td>service2</td> 
    </tr> 
    <tr> 
    <td>service3</td> 
    </tr> 
    <tr> 
    <td>blip</td> 
    </tr> 
</table> 

如何選擇最後的「服務-N」排時,我不知道會是什麼N + 我曾嘗試加入[last()],但它沒有奏效。

我:

//table//tr//td[contains(text(),'service')] 

,但它選擇的第一行,我想最後一個。
我不能使用tr[3],因爲實際上'service-n'行的數量是動態的,並且變化很大。

回答

13

答案是正是我把[最後的()和我有它在錯誤的地方

它放在這裏:

//div[@id='content']//table//tr[last()]//td[contains(text(),'service')][last()]/following-sibling::td[2] 

不在這裏

//div[@id='content']//table//tr[last()]//td[contains(text(),'service')]/following-sibling::td[2][last()] 
+3

1爲'TR [最後一個()]' – Konstantin

+0

@MichaelDurrant驚人的東西(1) – DebanjanB

1

用這種方法嘗試使用cssSelector。

By.cssSelector("table tr:last-child td") 
0
List<WebElement> allElement=fd.findElements(By.xpath("//table//td[contains(.,'service')]"); 
int count=allElement.size(); 
allElement.get(count-1).click(); 
+0

您好蘇雷什肖;你的代碼可能是正確的,但是在某些情況下,它會作出更好的回答;例如,您可以解釋如何以及爲什麼這個提議的變更可以解決提問者的問題,或許還包括指向相關文檔的鏈接。這將使它對他們更有用,而且對尋求類似問題解決方案的其他網站讀者也更有用。 –

相關問題