【问题标题】:Selenium xpath count硒 xpath 计数
【发布时间】:2011-07-03 20:41:44
【问题描述】:

我一定忽略了一些非常明显的东西。这个 XPath 表达式有什么问题?我想获取与id 的正则表达式匹配的表行数?

selenium.getXpathCount("//tr[matches(@id,'data-row-\\d+')]");

我明白了:

com.thoughtworks.selenium.SeleniumException: 错误:无效的 xpath [2]: //tr[matches(@id,'data-row-\d+')]

这里是示例 html:

<table>
  <tbody>
    <tr id="data-row-0"><td>foo</td></tr>
    <tr id="data-row-1"><td>bar</td></tr>
    <tr id="data-row-2"><td>baz</td></tr>
  </tbody>
</table>

【问题讨论】:

    标签: java testing selenium


    【解决方案1】:

    Selenium 1.x 不支持 XPath 2.0。因此,您不能使用诸如matches()、replace() 等XPath 2.0 方法。

    您可能需要考虑 XPath 1.0 方法,例如 contains()、starts-with() 等。

    另外,为了实现你的目标,你可以尝试

    //tr[starts-with(@id,'data-row-') and translate(@id,'0123456789','')]

    【讨论】:

    • 感谢您的解释。我不知道版本的差异。 starts-with 做得恰到好处。干杯!
    【解决方案2】:

    试试 -

    int tableRowCount = selenium.getXpathCount("//table[@id='whatever']/tbody/tr").intValue();
    

    【讨论】:

    • 问题是“随便”——他需要一个模式匹配,而不是一个常数。
    猜你喜欢
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    相关资源
    最近更新 更多