假设我有这样的结构:
<div class="a" attribute="foo">
<div class="b">
<span>Text Example</span>
</div>
</div>
在xpath中,我想检索属性“attribute”的值,因为我有文本内容:文本示例
如果我使用这个xpath:
.//*[@class='a']//*[text()='Text Example']
它返回元素span,但我需要div.a,因为我需要通过Selenium WebDriver获取属性的值
答案 0 :(得分:5)
嘿,有很多方法可以解决这个问题。
让我们说Text Example
,你可以用这个文字来识别它: -
//span[text()='Text Example']/../.. --> If you know its 2 level up
OR
//span[text()='Text Example']/ancestor::div[@class='a'] --> If you don't know how many level up this `div` is
如果您只想使用xpaths
识别元素,如果您不希望迭代此文本,则可以使用2 Text Example
以上。有简单的方法可以直接识别它: -
//div[@class='a']
答案 1 :(得分:0)
从你的问题本身你已经提到了它的答案
但我需要 div.a ,
试试这个
driver.findElement(By.cssSelector("div.a")).getAttribute("attribute");
使用cssSelector获得最佳效果。
或尝试以下xpath
//div[contains(@class, 'a')]
答案 2 :(得分:0)
如果您希望div.a
的{{1}} span
text
属性包含driver.findElement(By.xpath("//div[@class = 'a' and descendant::span[text() = 'Text Example']]")).getAttribute("attribute");
内容,请尝试以下操作: -
{{1}}
希望它有所帮助.. :)