使用定位器访问当前元素的兄弟

时间:2015-12-22 12:54:28

标签: css selenium selenium-webdriver css-selectors webdriver

如何使用 findelement ,从具有id = 1.custom-system-user.generatepassword的元素中找到第3个div元素,然后在第3个中找到img元素div 兄弟姐妹?

请注意,不能保证table元素是第一个兄弟,所以我需要的是访问相对于 table 元素的第三个 div (I不能依赖div作为第n个兄弟姐妹吗?

P.s - 是否有这样的东西"嵌套" css选择器/定位器(table + div + div + div> img)?

请注意 enter image description here

4 个答案:

答案 0 :(得分:1)

我的简化示例(id 属性仅用于调试目的):

<html>
    <body>
        <table id="0.custom-System-User.generatePassword">Table</table>
        <div>Foo</div>
        <div>Bar</div>
        <div>
            <div>
                <div>
                    <img id="my-image" />
                </div>
            </div>
        </div>
    </body>
</html>

Python脚本:

from selenium import webdriver
browser = webdriver.Chrome()
browser.get(URL)
el = browser.find_element_by_xpath('//table[contains(@id, generatePassword)]/following-sibling::div[3]//img')
el.get_attribute('id')

输出:

In [5]: el.get_attribute('id')
Out[5]: u'my-image'

xpath选择器可能类似于'//table[contains(@id, generatePassword)]/following-sibling::div[3]/div/div/img'

答案 1 :(得分:0)

假设有三个div元素,可以轻松使用xpath

driver.findElement(By.xpath("//div[@class='x-form-item'][3]/div/div/img"))

答案 2 :(得分:0)

尝试以下xpath:

 "//div[contains(@id, '1.custom-System-User.x-auto')]//img"

如果不能正常工作,请您扩展所提供HTML的所有部分,因为我无法确切知道究竟是什么。

答案 3 :(得分:0)

你可以试试吗

/api/Products/13?filter{"include":["categories"]}