使用Selenium C#的表中的行数

本文关键字:使用 Selenium | 更新日期: 2023-09-27 18:24:59

我是硒的新手。我正在使用c#。有一张这样的桌子。我看到它使用FireBug。

<table>
  <tbody>
    <tr class="v-table-row-odd"></tr>
    <tr class="v-table-row"></tr>
    <tr class="v-table-row-odd"></tr>
    <tr class="v-table-row"></tr>
    <tr class="v-table-row-odd"></tr>
    <tr class="v-table-row"></tr>
  </tbody>
</table>

这里的问题是,我不知道如何获得动态变化的表中的行数。有什么办法吗??

尝试了xpathCount,但遇到了一些异常问题。。

decimal numOfRows = selenium.GetXpathCount("xpath=/html/body/div/div/div[2]/div/div[3]/div/div[2]/div/div/div[2]/div/div/div/div/div[7]/div/div/div[2]/div/table/tbody/tr");

我也试过像这个一样的xpathCount

selenium.GetXpathCount("xpath=/html/body/div/div/div[2]/div/div[3]/div/div[2]/div/div/div[2]/div/div/div/div/div[7]/div/div/div[2]/div/table/tbody");

但两者都有例外。有人能在这方面帮我吗。

谢谢

使用Selenium C#的表中的行数

尝试获取表中的行数

int iRowsCount = driver.FindElements(By.XPath("/html/body/..../table/tbody/tr")).Count;

如果它是唯一一个用这些类名标记行的表,您可以使用:

decimal numOfOddRows = selenium.GetXpathCount("//tr[@class='v-table-row-odd']"); // 3
decimal numOfEvenRows = selenium.GetXpathCount("//tr[@class='v-table-row']");    // 3
decimal numOfRows = numOfOddRows + numOfEvenRows;                        // 3 + 3 = 6

如果没有,则需要找到更好的方法来定位table。从文档顶部开始的(非常长的)XPath选择器有些不太正确。这并没有本质上的错误,但对于一个动态的网页来说,很难做到正确。

相反,您需要找到一个离table更近的元素,然后在其中进行筛选。例如,如果某个div具有name属性,则可以使用//div[@name='someName']//tr。有关使用XPath选择器的更多信息,请参阅此处。

对我有用的是XPath与ID的组合以及在末尾添加的表tbody-tr元素。

int RowCount = driver.FindElements(By.XPath("//*[@id='tableID']/tbody/tr")).Count;