html - 使用 JUnit/Selenium 查找 HTML 表格单元格

标签 html testing selenium junit css-selectors

我正在使用包含表格的 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”:

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

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

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

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

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

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

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

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

最佳答案

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

关于html - 使用 JUnit/Selenium 查找 HTML 表格单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10074493/

相关文章:

javascript - 所有来自 iframe 的下载都会转到服务器中的文件夹

html - 在 Bootstrap 响应式设计中堆叠列和图像

html - Flexbox 高度问题

javascript - 同时打开 mailto 并提交表单

testing - 有什么方法可以证明更改后的实现不会引入回归?

ios - 在真实设备上测试 PhoneGap 应用程序

selenium - 是否可以在 HtmlElements 的 HtmlBlock 中获取驱动程序实例?

java - 在一台计算机上出现 "UnreachableBrowserException/Address already in use"的 Selenium 中断

r - 如何使用 R/exams 包生成包含随机生成的单选答案的考试?

java - 在 Selenium 2.0 中处理 "are you sure you want to navigate away from this page"Msg