使用定位器访问当前元素的兄弟
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"))
我如何使用 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"))