簡體   English   中英

如何在硒中找到具有相同xpath的匹配元素的匹配長度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM