繁体   English   中英

使用正则表达式通过Xpath查找WebElement

[英]Finding WebElement by Xpath Using Regex

我有以下WebElement:

<input id="" type="checkbox" value="/p1/foobar1" name="checkbox1" partition="p1" onclick=""/>
<input id="" type="checkbox" value="/p1/foobar" name="checkbox2" partition="p1" onclick=""/>
<input id="" type="checkbox" value="/p2/foobar2" name="checkbox3" partition="p2" onclick=""/>

我想基于xpath中使用regex的value属性在上述源中找到第二个元素(值为/p1/foobar元素)。 我尝试了以下方法:

driver.findElement(By.xpath("//input[matches(@value,'.*\\/foobar$')]"));

但是它抛出一个InvalidSelectorException。 我已经让它可以像这样与cssSelector一起使用...

driver.findElement(By.cssSelector(input[value$='\\/foobar']));

但是我仍然很好奇如何使用xpath完成此操作。 有什么建议么?

编辑:我还应该注意,我希望能够找到此元素而又不知道最后一个斜杠(aka /p1/ )之前的字符。

尝试

//input[@value='/p1/foobar']

如果您不知道开头是什么,则必须诉诸功能:

//input[contains(@value, 'foobar') and substring-after(@value, 'foobar') = '']

这是一个“小提琴”

<?xml version="1.0" encoding="UTF-8"?>
<result>
<input id="" name="checkbox1" onclick="" partition="p1" type="checkbox" value="/p1/foobar1"/>
<input id="" name="checkbox2" onclick="" partition="p1" type="checkbox" value="/p1/foobar"/>
<input id="" name="checkbox3" onclick="" partition="p2" type="checkbox" value="/p2/foobar2"/>
</result>

http://www.xpathtester.com/xpath/4dc56e27ca1674ea0b5b48357214b907

我可以在XPath表达式中使用正则表达式所述。 ,XPath 1.0不支持正则表达式。

这里有很多例子:

https://msdn.microsoft.com/en-us/library/ms256086(v=vs.110).aspx

这是XPath函数的列表:

https://msdn.microsoft.com/en-us/library/ms256180(v=vs.110).aspx

使用xpath包含功能。 相当复杂。 可能您不想走这条路。 但这也可以做到

//input[contains(@value,'foo') and (not(contains(@value,'foobar1'))) and (not(contains(@value,'foobar2')))]

*请记住复杂性,我认为CssSelector最适合这种情况。

XPath不支持正则表达式。 您将不得不求助于其他XPath函数,例如,您可以使用类似以下内容的东西:

//input[ends-with(@value,'foobar')]

有XPath函数组成的漂亮的列表在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM