【问题标题】:How to handle html shadow dom using selenium webdriver?如何使用 selenium webdriver 处理 html shadow dom?
【发布时间】:2018-09-27 10:04:30
【问题描述】:
public WebElement expandShadowRootElement(WebElement element) {
    WebElement shadowRoot = (WebElement) ((JavascriptExecutor)driver)
        .executeScript("return arguments[0].shadowRoot", element);
    return shadowRoot;
}

WebElement root1= driver.findElement(By.xpath("(//div[@id='accordionSearch']//descendant::input[@class='form-control'])[1]"));
WebElement shadowRoot1=expandShadowRootElement(root1);
WebElement element= shadowRoot1.findElement(By.cssSelector("div[id=editing-view-port]/div"));
element.click();

此代码无效。

【问题讨论】:

  • 请更好地解释 not working 部分。另外,将 html 发布为文本,而不是图像。
  • 我的要求是选中复选框,第二次需要跳过,如果它已经被选中但那些元素在不可见的影子房间下。

标签: javascript java selenium


【解决方案1】:

我最近遇到了类似的问题,唯一对我有用的解决方案是 javascript。 这是我使用的 Java 代码示例。它从 Chrome 下载页面的第一个元素中获取<div id="details">,并将其保存为 WebElement。

WebElement details = (WebElement) ((JavascriptExecutor) driver).
executeScript("return document.querySelector('downloads-manager').
shadowRoot.querySelector('#downloads-list downloads-item').
shadowRoot.querySelector('#content #details')");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-30
    • 2019-11-13
    • 2018-12-23
    • 2018-06-25
    • 2016-09-19
    • 2022-12-23
    • 2016-07-08
    相关资源
    最近更新 更多