使用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");
但两者都有例外。有人能在这方面帮我吗。
谢谢
尝试获取表中的行数
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;