【问题标题】:How to traverse to an element which is inside a Shadow DOM using Selenium?如何使用 Selenium 遍历 Shadow DOM 内的元素?
【发布时间】:2020-06-22 08:52:36
【问题描述】:

我想从下面的代码中使用文本“ShadowRootLabel”获取阴影元素:

<div id="example">
#shadow-root
<div id="root" part="root">
  <div id="label" part="label">ShadowRootLabel</div>
</div>
</ptcs-label>

【问题讨论】:

  • 你使用 Java/Python/NodeJS 哪些 Selenium 客户端?

标签: selenium selenium-webdriver webdriver shadow-dom


【解决方案1】:

要使用 Selenium 驱动的 WebDriver 使用文本 ShadowRootLabel 识别 元素,您可以使用以下基于 的解决方案:

  • 代码块:

    WebElement root = driver.findElement(By.cssSelector("div#example"));
    WebElement shadow_root = expand_shadow_element(root);
    WebElement ShadowRootLabel = shadow_root.findElement(By.xpath("//div[@id='root']/div[text()='ShadowRootLabel']"));
    
  • expand_shadow_element()方法:

    public static WebElement expand_shadow_element(WebElement element)
    {
        WebElement shadowRoot = (WebElement)((JavascriptExecutor)driver).executeScript("return arguments[0].shadowRoot", element);
        return shadowRoot;
    }
    

参考文献

您可以在以下位置找到一些相关讨论:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2016-09-19
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    相关资源
    最近更新 更多