webdriver中的正则表达式

时间:2014-07-31 04:33:29

标签: regex selenium xpath selenium-webdriver webdriver

我是Webdriver的新手。在下面的语法值37500是动态的,所以请帮助我如何为相同的

做正则表达式
driver.findElement(By.xpath(".//*[@id='37500']/td[2]")).click();

提前致谢

2 个答案:

答案 0 :(得分:0)

如果您可以使用XPath 2.0,则可以调用matches() XPath function,但我不认为您可以通过Selenium Webdriver使用的任何浏览器都支持。

在XPath 1.0中(由Selenium支持),您应该有number() function可用。可以使用它来检查值是否为数值。

number(value) = number

表示转换为数字的值保持不变(因此它不是文本,不是布尔值,也不是节点集)。

因此,以下XPath表达式应该允许您在每个具有数字td的元素中找到第二个id,并解决缺少正则表达式支持的问题:

.//*[number(@id) = @id]/td[2]

要查找页面上的所有匹配元素,请使用findElements

driver.findElements(By.xpath(".//*[number(@id) = @id]/td[2]")).click();

答案 1 :(得分:0)

如果值在此

中动态变化
driver.findElement(By.xpath(".//*[@id='37500']/td[2]")).click();

然后使用id属性将无效。请检查root html尝试使用Parent标记。例如:/html/body//div/td[2]

或者如果它有唯一字段,请尝试使用不同的属性。