如何编写更好的xpath表达式?

时间:2015-01-16 13:38:21

标签: html selenium xpath

我有类似的HTML:

<tr>
  <td>
    <span>
      <span class = "x28w"></span>
    </span>
  <td>
    <span>
      <a>
        <span>3899393</span>
      </a>
    </span>
  </td>
</tr>

<tr>
  <td>
    <span>
    </span>
  <td>
    <span>
      <a>
        <span>3899394</span>
      </a>
    </span>
  </td>
</tr>

所以基本上第一个跨度是空白的,但是如果下面有一个带有类"x28w"的子跨度,它将显示一个图标。第二个(即3899393)是一个案例编号。

我想用Java List<String>getCasesWithAlert()编写一个selenium方法。

我可以执行findElements(By.xpath("//tr")),遍历元素,检查当前tr是否有td/span/span[contains(@class,'x28w')]

如果有,则取出行,找到子td元素,获取第二个元素并找到元素a / span然后获取文本。但这有点复杂。

我是否可以使用某种xpath表达式(如follow-sibling等)在一个表达式中查找包含警报图标(类x28w)的案例?

1 个答案:

答案 0 :(得分:0)

对于每个tr,您可以检查第一个td是否符合条件,并从第二个span获取所需的td元素:

//tr[td[1][span/span[contains(@class,'x28w')]]]/td[2]/span/a/span