我是Selenium的新手。我正在使用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");
但两者都提出了异常。任何人都可以在这方面帮助我。
谢谢
答案 0 :(得分:4)
尝试使用此方法获取表格中的行数
int iRowsCount = driver.FindElements(By.XPath("/html/body/..../table/tbody/tr")).Count;
答案 1 :(得分:3)
如果它是唯一一个标有这些类名的行的表,你可以使用:
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选择器的更多信息,请参阅here。
答案 2 :(得分:0)
对我有用的是将ID的XPath和末尾添加的表tbody tr元素组合在一起。
int RowCount = driver.FindElements(By.XPath("//*[@id='tableID']/tbody/tr")).Count;