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

using locators to access sibling of current element

我如何使用 findelement 从具有 id=1.custom-system-[=30 的元素中定位第 3 个 div 元素=] 然后是第三个 div 兄弟中的 img 元素 ?

请注意,不能保证 table 元素是第一个兄弟元素,所以我需要访问第三个 div 相对于仅 table 元素(我不能指望 div 是第 n 个兄弟) ?

P.s - 有这样的东西吗 "nested" css selectors/locators ( table+div+div+ div>图片)?

备注

假设会有3个div元素,你可以轻松使用xpath

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

尝试以下 xpath:

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

如果不起作用,请您展开所提供的 HTML 的所有部分,因为我不知道那里到底是什么。

我的简化示例(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'.

你能试试这个吗

driver.findElement(By.xpath("//table[@id='0.custom-System-User.generatePassword']/div[3]/div/div/img"))