使用量角器在 Shadow-root 中定位元素

Posted

技术标签:

【中文标题】使用量角器在 Shadow-root 中定位元素【英文标题】:Locate elements inside Shadow-root using Protractor 【发布时间】:2019-06-26 22:37:33 【问题描述】:

我的应用程序的大部分元素都在 shadow-root(open) 下。我需要使用 Protractor 框架使它们自动化。 deepCSS 没有成功。请帮助我自动化这些元素 - 主要是点击。

我必须使用量角器自动化框架单击 shadow-root 元素。我尝试了 deepCSS、xpath 等,但没有任何效果。

    var spanElem = element.all(by.deepCss('.heading'));
    spanElem.click()
            //browser.actions().mouseMove(spanElem).click().perform();

【问题讨论】:

首先:你得到的错误是什么?第二:你能提供页面的html源代码吗?最后但并非最不重要的一点:spanElemElementArrayFinder - 你不能对其执行 click 方法。请参阅参考资料(仅适用于ElementFincer):protractortest.org/#/… 【参考方案1】:

类似问题:

deepCss is failing to identify an element inside the shadow root in Protractor Protractor: Unable select input element inside a shadow DOM (Polymer) using by.deepCss('input')

Protractor 似乎还没有很好地支持 Shadow DOM。第二个问题有一个指向此问题的答案https://github.com/angular/protractor/issues/4367 和添加自定义定位器by.addLocator('css_sr', (cssSelector: string, opt_parentElement, .... 的解决方法。我确认这也适用于我的情况。

【讨论】:

以上是关于使用量角器在 Shadow-root 中定位元素的主要内容,如果未能解决你的问题,请参考以下文章

java+selenium,请问该如何定位#shadow-root里面的元素?

shadow-root中的元素定位方法

shadow-root中的元素定位方法

shadow-root中的元素定位方法

量角器+故事书:失败:使用定位器找不到元素:By(css选择器)

如何使用量角器定位器找到子元素?