簡體   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