![](/img/trans.png)
[英]How to identify an element in selenium even if xpath is same for all the matching nodes
[英]How to find matching length of matching elements having same xpath in selenium
我是Selenium的新手,想找到具有匹配xpath的節點的長度。
例如:
<html>
<body>
<table>
<tbody>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
</tbody>
</table>
</body>
我想在Selenium中編寫一個java代碼來查找節點的長度。 我想要長度,例如,如果我找到“ tr”節點,我希望長度為4
xpath將是.//html/body/table/tr
您的xpath
不正確。 您還應該使用復數形式的findElements
來查找多個元素。 這將返回List<WebElement>
,然后您只需調用size()
來獲取<tr>
標記的數量。 嘗試
int count = allocation.findElements(By.xpath("//html/body/table/tbody/tr")).size();
我給出了絕對路徑,因為你提供的html中沒有和其他標識符,但不建議這樣做。
在java中,
int rowCount=driver.findElements(By.xpath("//table[@id='DataTable01']/tbody/tr")).size();
int columnCount=driver.findElements(By.xpath("//table[@id='DataTable01']/tbody/tr/td")).size();
你可以用另一種方式
List<WebElement> rows = tblData.findElements(By.tagName("tr"));
int rowCount = rows.size();
如果您從父節點遍歷,則不需要輸入//
。
xpath下面也適合你
/html/body/table/tbody/tr
絕對XPath絕對XPath以根節點或正斜杠(/)開頭。 使用絕對的優點是,它可以非常快速地識別元素。 這里的缺點是,如果出現任何問題或者其間添加了其他標記,那么此路徑將不再有效。
示例:如果我們定義的路徑為
1. html/head/body/table/tbody/tr/th
如果在正文和表格之間添加了一個標簽,如下所示
2. html/head/body/form/table/tbody/tr/th
第一條路徑不能用作中間添加的“form”標記
相對XPath
相對的XPath是路徑從選擇的節點開始的路徑-不需要從根節點開始。
它以雙正斜杠( //
)開頭
句法:
//table/tbody/tr/th
使用相對xpath的優點是,您無需提及長xpath,可以從中間或中間開始。
這里的缺點是,識別元素需要更多時間,因為我們指定的部分路徑不是(精確路徑)。
如果同一路徑有多個元素,它將選擇被標識的第一個元素
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.