我想在Selenium中查找包含文本的XPath元素,但有兩種可能的情況。這裏有:使用單個XPath覆蓋兩種情況?
.//li/a[contains(., 'blah')]
.//li/a/span[contains(., 'blah')]
如何用單個XPath覆蓋兩種情況?
第二個問題如果可能我希望得到結果指針a
元素,而不是span
在這兩種情況下。
此外,是否有一種通用的方式來返回匹配元素的匹配父項,而不是?
我想在Selenium中查找包含文本的XPath元素,但有兩種可能的情況。這裏有:使用單個XPath覆蓋兩種情況?
.//li/a[contains(., 'blah')]
.//li/a/span[contains(., 'blah')]
如何用單個XPath覆蓋兩種情況?
第二個問題如果可能我希望得到結果指針a
元素,而不是span
在這兩種情況下。
此外,是否有一種通用的方式來返回匹配元素的匹配父項,而不是?
一般情況下,的XPath表達式可以與|
組合(如:xpath1 | xpath2
),但是你並不需要在這種情況下,這樣做...
由於喬希克羅齊爾在評論中問,是的,.//li/a[contains(., 'blah')]
涵蓋了這兩種情況。
字符串值a
必須包含"blah"
,如果它的任何後代span
元素的字符串值包含"blah"
。
第二個問題,如果可能,我希望得到儘可能結果指向一個 元素,而不是在這兩種情況下的跨度。
.//li/a[contains(., 'blah')]
將返回這樣的a
元素。
注意,它也將返回這樣a
元素
<a>xxxblah</a>
<a><span>blah</span></a>
<a><span>bl</span><span>ah</span></a>
PS> BTW是有返回的 匹配元素的匹配父一般的方式,而不是?
好,追加/..
到一個XPath將返回母,但我懷疑你會從學習XML元素的字符串值中受益。請參閱Testing text() nodes vs string values in XPath
你可以嘗試這樣的事情 .// LI/* [包含(。,「胡說」)]
您應該測試我給你,以確保它不會返回更多的XPath比你想要的比賽,但我只是用://a[contains(.,'blah')]
不是第一個XPath的'./。li/a [包含(。,'blah')]'涵蓋了這兩種情況嗎? –