如何使用变量 Selenium 通过 XPATH 查找元素

我正在尝试使用 XPATH 解析一些元素

这是我的代码:

driver.get("http://watir.com/examples/shadow_dom.html")
shadow_host = driver.find_element(By.XPATH, '//*[@id="shadow_host"]')
shadow_root1 = shadow_host.shadow_root
shadow_host1 = shadow_root1.find_element(By.XPATH, '/span')
selenium.common.exceptions.InvalidArgumentException:消息:参数无效:定位器无效

我知道我可以使用 CSS 选择器,但我想在没有任何 CSS 选择器的情况下使用它。你能帮我吗,如何shadow_host1使用 XPATH 正确编写?谢谢

点击右侧采纳即可:
可以使用以下 XPATH:

shadow_host1 = shadow_root1.find_element(By.XPATH, '//span')

你在查找元素时应该使用绝对路径。因此,您应该使用 "//" 而不是 "/"。

有一个很高效的办法,你直接鼠标右键检查,然后点击出来的框框有一个鼠标的剪头,点页面哪里就会跳转到这个元素的位置,然后直接右键复制xpath即可,如果你只获取一个节点的话,这样是最快的。

您不能将 XPATH 定位器与shadow root一起使用。您可以改用 CSS LOCATORS(在 Chrome/chromedriver 设置上),或者(在使用 Firefox/geckodriver 设置时)使用 javascript 选择器 (querySelector)。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^