找不到阴影元素

问题描述 投票:0回答:2

尝试获取阴影元素的属性但得到

ElementNotVisibleException Element with CSS input[type='checkbox'] is not present on screen

<checkbox _ngcontent-ebv-c14="" label="User Access" ng-version="8.0.3" class="ng-star-inserted">
  #shadow-root(open)
    <label>
      <input type="checkbox" name="" value="true">
      <span class="checkmark"></span>
      <!---->
      <span class="label">User Access</span>
   </label>
</checkbox>

使用Selenium获取元素属性

WebElement parentElement = webdriver.findElement(By.xpath("//checkbox[@label='User Access']"));
webdriver.getShadowElement(parentElement,"input[type='checkbox']").getAttribute("value").contains("true");

我错过了什么吗?

html css selenium selenium-webdriver
2个回答
0
投票

我这样解决我的问题

public class test {
    WebDriver driver;
    public WebElement maximizerootelement(WebElement retelement) {
        WebElement ele = (WebElement) ((JavascriptExecutor) driver)
                .executeScript("return arguments[0].shadowRoot",retelement);
        return retelement;
    }

    @Test
    public void mytest() {
        driver.get("https://yourlin");
        WebElement root1 = driver.findElement(By.tagName("//checkbox[@label='User Access']"));
        WebElement shadowRoot = maximizerootelement(root1);
        String actualHeading = shadowRoot.findElement(By.cssSelector("input[type='checkbox']")).getText();
        Assert.assertEquals("true", actualHeading);


    }
}

使用 javascript 执行器,您需要扩展元素以对元素执行操作


0
投票

我能够通过以下步骤解决此问题:

  1. 从 DOM 元素复制 js 路径(转到检查窗口 -> 右键单击元素 -> 单击复制 -> 单击复制 jspath)
  2. 使用 javascript 执行器找到元素,将其转换为 webelement,然后执行所需的操作

WebElement ele = (IWebElement)executor.ExecuteScript("return 在此处粘贴你的 jspath"); ele.Click();

© www.soinside.com 2019 - 2024. All rights reserved.