【问题标题】:Selenium XPath - Ignore element amongst tableSelenium XPath - 忽略表中的元素
【发布时间】:2015-09-03 11:20:48
【问题描述】:

我在选择要在 Selenium 中读取的表时遇到问题。
我有一个表,其中“thead”中有两个“tr”元素,我需要找到一种方法来忽略其中的第一个。
代码如下:

<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 并记录每列的标题。在我正在努力解决的这种情况下,该表顶部有一个额外的“tr”这一事实阻碍了此过程。

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

[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')]/../../..

在这里,我坚持使用 'tr' 元素,告诉它不要使用它然后退出,但这会再次选择它 - 即使这样也不会取消选择整个 'tr' 元素。我试图删除的“tr”元素是空白的,没有类或定义特征,这似乎没有帮助(对我来说)。

有没有办法选择整个表格,除了 'thead' 中的第一个 'tr' 元素作为一个元素?

【问题讨论】:

  • “选择整个表格”是什么意思?你以后想对这张桌子做什么?这对回答您的问题很重要,因此请更好地描述您真正想要实现的目标(以及您已经尝试过的 xpath 在哪里?)
  • 使用 Selenium 我会要求它记录某个行和列的值。然后,这将查看我将提供给它的 Table 元素(希望在这种情况下使用我可以使用的 XPath),查看 thead 并记录每列的标题。在我正在努力解决的这种情况下,该表顶部有一个额外的“tr”这一事实阻碍了此过程。我会将这个和我尝试使用的 XPath 添加到帖子中

标签: selenium xpath


【解决方案1】:

组合两个 xpath。第一个 xpath 在没有第一个 tr 和第二个 tbody 的情况下采用 thead

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

【讨论】:

  • 这确实有效,因为它选择了我需要的所有东西,但不幸的是它被视为两个独立的元素,所以当 Selenium 去使用它时,它最终只会看到两个 XPath 中的第一个在那里面。如果我能找到让 Selenium 结合这两个元素的方法,那就完美了
  • @StevieBruce 不幸的是,我对硒一无所知。但它在 xpath 测试人员中运行良好
【解决方案2】:

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

【讨论】:

  • 好主意,我觉得这可能是最好的方法。问题是已经有很多测试使用了这个功能,这样做会阻止那些工作,但我可以复制那个代码并专门为这个问题创建一个新流程。谢谢
  • 我还没有看到那个函数,但是如果有很多共享代码,我会尝试将两者合并在一起,如果可能的话,以最小化共享代码。
猜你喜欢
  • 1970-01-01
  • 2022-01-27
  • 2022-12-03
  • 2021-10-11
  • 1970-01-01
  • 2019-10-21
  • 2015-10-20
  • 1970-01-01
  • 2015-06-21
相关资源
最近更新 更多