我是Webdriver
的新手。在下面的语法值37500
是动态的,所以请帮助我如何为相同的
driver.findElement(By.xpath(".//*[@id='37500']/td[2]")).click();
提前致谢
答案 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]
或者如果它有唯一字段,请尝试使用不同的属性。