使用Selenium C#的表中的行数

时间:2012-02-16 06:25:49

标签: c# selenium selenium-webdriver selenium-ide selenium-rc

我是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");

但两者都提出了异常。任何人都可以在这方面帮助我。

谢谢

3 个答案:

答案 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;