如何使用 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)?
答案 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"]}