selenium 无法使用js Executor读取阴影dom元素

p1iqtdky  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(130)

我一直在尝试自动化的服务现在网站和网站的元素都在影子DOM.网站:https://developer.servicenow.com/dev.do
在js Executor的帮助下,我弄清楚了如何与阴影元素交互,但现在我得到了其中一个元素的错误:
org.openqa.selenium.JavascriptException:javascript错误:无法读取null的属性(阅读'shadowRoot')
下面是代码片段:

Thread.sleep(5);
     String startBuilding = "document.querySelector('body > dps-
    app').shadowRoot.querySelector('div > main > dps-home-auth-
    quebec').shadowRoot.querySelector('div > section:nth-child(1) > div > dps-page-header > div:nth-child(1) > button > span').click()";
    js.executeScript(startBuilding);

有人能帮我解决这个问题吗?
PS:我是 selenium 的菜鸟。
也尝试了waits和Thread.sleep(),但没有成功。

62lalag4

62lalag41#

您可以使用此选项:

shadow_host = driver.find_element(By.CSS_SELECTOR, '#shadow_host')
shadow_root = shadow_host.shadow_root
shadow_content = shadow_root.find_element(By.CSS_SELECTOR, '#shadow_content')

相关问题