简体   繁体   English

访问影子DOM树

[英]Access to shadow DOM tree

Can't access to element inside shadow dom. 无法访问影子dom内部的元素。

Screenshot demonstrating how it looks: 屏幕截图展示了它的外观:
屏幕截图展示了它的外观

I've tried to use: 我尝试使用:

    WebElement root1 = DriverFactory.driver.findElement(By.tagName("downloads-manager"));       
    WebElement shadowRoot1 = expandRootElement(root1);

    WebElement root2 = shadowRoot1.findElement(By.cssSelector("iron-list"));
    WebElement shadowRoot2 = expandRootElement(root2);

    WebElement root3 = shadowRoot2.findElement(By.cssSelector("downloads-item"));
    WebElement shadowRoot3 = expandRootElement(root3);

    shadowRoot3.findElement(By.xpath("//div[@id='title-area' and contains(.,'Lviv')]/ancestor::div[@class='controls']/a[@id='preview']")).click();
 public WebElement expandRootElement(WebElement element) {
    WebElement ele = (WebElement) ((JavascriptExecutor) DriverFactory.driver)                
    .executeScript("return arguments[0].shadowRoot",element);
    return ele;}

In result: 结果:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"downloads-item"}

You have written wrong please refer below code 您写错了,请参考以下代码

By.tagName("iron-list")) By.cssselectorBy.tagName("#downloads-item")); By.tagName(“ iron-list”))By.cssselectorBy.tagName(“#downloads-item”));;

You can use below Xpath 您可以在Xpath下使用

.//*[@id='downloads-list']/downloads-item

or CSS selector 或CSS选择器

#downloads-list>downloads-item

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM