[英]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.