Xpath获取上面的元素

时间:2016-07-19 11:43:06

标签: xpath selenium-webdriver

假设我有这样的结构:

<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获取属性的值

3 个答案:

答案 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}}

希望它有所帮助.. :)