【问题标题】:Finding HTML table cell using JUnit / Selenium使用 JUnit / Selenium 查找 HTML 表格单元格
【发布时间】:2012-04-09 14:12:23
【问题描述】:

我正在使用 Selenium IDE 测试一个包含表格的网页。我想通过 CSS 选择器验证表格单元格(行、列)中的文本。表格的 HTML 结构非常简单。这是一个表格示例,其中每一行代表一个人的不同属性:

<html...>
  <head>
  </head>
  <body>
    <div class="pageBody">
      <table>
        <tbody>
          <tr>
            <td></td>
            <td>AGE</td>
            <td>49</td>
          </tr>
          <tr>
            <td></td>
            <td>WEIGHT</td>
            <td>165</td>
          </tr>
... and so on

在 Selenium IDE 中,我可以使用以下 CSS 选择器在包含 AGE 的表行中找到“49”:

(方法 1) css=#pageBody table tbody tr:nth-child(1) td:nth-child(3)

但是,如果我不确定每个表的行数是否相同(如果根据每个人的可用数据动态创建表),我可以将伪选择器从 nth-child 更改为包含:

(方法 2) css=#pageBody table tbody tr:contains('AGE') td:nth-child(3)

当我将这些方法导出为 JUnit 代码时,问题就出现了。以下 JUnit 代码块有效:

(使用 APPROACH 1
WebDriver.findElement(By.cssSelector("#pageBody table tbody tr:nth-child(1) td:nth-child(3)"))

以下 JUnit 代码块失败的地方:

(使用 APPROACH 2
WebDriver.findElement(By.cssSelector("#pageBody table tbody tr:contains('AGE') td:nth-child(3)"))

有谁知道为什么 JUnit APPROACH 2 无法找到完全有效且在 Selenium IDE 中运行良好的 CSS 选择器?请提出问题以进行澄清。非常感谢您对此提供的任何启发。

【问题讨论】:

  • 你的意思是 td:nth-child(3) 而不是 tr:nth-child(3) 在你所有的方法中,对吧?
  • 是的...我已经更新了帖子...感谢您的关注!!!
  • 是否应该有
    而不是
    ?那么 xpath 将是: //div[@id='pageBody']//td[contains(text(), 'AGE')]/following::td

标签: html testing selenium junit css-selectors


【解决方案1】:

据我所知,CSS 不支持选择器:contains。要根据文本内容选择元素,您应该改用 XPath。

【讨论】:

  • 如上所述,:contains 在 Selenium IDE 中使用 CSS 选择器查找页面元素可以正常工作。这不是暗示 :contains 在 CSS 中受支持吗?
  • @fuzzynavel:不,:contains() 已从 CSS 规范中删除,而 Selenium 恰好实现了描述 :contains() 的规范的先前版本。见this answer
  • 那么,鉴于 CSS3 的当前规范,您是否有任何建议如何重现 contains() 的相同功能,以便在给定表格的“AGE”行中验证“49”的文本上面的结构?有关此 XPath 外观的任何提示?谢谢。
  • 对于 XPath 类似://*[@id='pageBody']/table/tbody/tr[contains(., 'AGE')]/td[position()=3] 或更短的版本://tr[contains(., 'AGE')]/td[position()=3]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2012-09-29
  • 1970-01-01
  • 2013-04-26
相关资源
最近更新 更多