Selenium XPath - 忽略表中的元素

时间:2015-09-03 11:20:49

标签: selenium xpath

我在选择要在Selenium中阅读的表时遇到问题 我有一张桌子,里面有两个' tr'在' thead'里面的元素,我需要找到一种方法来忽略其中的第一个 这是代码:

<table class="noselect">
    <thead>
      <tr>
         <th> </th>
         <th class="number IOL">Interest Rates</th>
         <th class="number IO">
      </tr>
      <tr>
         <th>Description</th>
         <th class="number">Value</th>
         <th class="number">Percentage</th>
      </tr>
    </thead>
    <tbody>
      <tr>
      <tr class="">
      <tr class="">
      <tr class="">
      <tr>
      <tr>
    </tbody>
</table>

使用Selenium我会要求它记录某个行和列的值。然后,我将查看我将给它的Table元素(希望使用XPath,我可以在这种情况下工作),查看thead并记录每列的标题。在这种情况下,我正在努力,事实上还有一个额外的&#39; tr&#39;在这个表的顶部阻碍了这个过程。

这是元素当前的使用方式:

[TableAlias("Detailed table")]
protected virtual IWebElement DetailedTable()
{
    return Driver.FindElement(By.XPath("//table[@class='noselect']"));
}

我已经尝试了许多不同的方法,但是我所要做的就是:

//table[@class='noselect movements']/thead/tr/th[not(text()='Interest Rates')]/../../..

我在这里坚持要去&#39; tr&#39;元素,告诉它不要使用它然后退出,但再次选择它 - 即使这并没有取消选择整个&#39; tr&#39;元件。它似乎没有帮助(对我来说)&#39; tr&#39;我尝试删除的元素是空白的,没有类或定义功能。

有没有办法选择整个桌子,除了第一个&#39; tr&#39;元素&#39; thead&#39;作为一个元素?

2 个答案:

答案 0 :(得分:1)

组合两个xpathes。第一个xpath带有没有第一个tr和第二个tbody的thead

//table/thead/tr[not(position()=1)] | //table/tbody

答案 1 :(得分:0)

在处理THEAD标记的函数中,获取TR的集合并以[1]开始(跳过[0])并处理其余部分。