deepCss无法在量角器的影子根内部识别元素

时间:2019-05-27 03:58:01

标签: css-selectors protractor shadow-dom

无法确定量角器中ShadowRoot内部的按钮。

我尝试如下使用deepCss

this.startNowButton = element(by.deepCss('button[class="apply-now"]'));

但是我得到

NoSuchElementError: No element found using locator: By(css selector, * /deep/ button[class="apply-now"])

这是识别ShadowRoot for Protractor中元素的正确方法吗?谢谢

我的HTML页面类似于以下内容

<div id="modal">
<div class="push-wrap">
   <header id ="site-header">
      <hmy-cms-header class="hydrated">
         #shadow-root (open)
           <header>
               <div class=notification-banner> ... </div>
               <div class="ca">
                  <button class="apply-now">"Apply"<span>now</span>

3 个答案:

答案 0 :(得分:0)

尝试以下定位器选项

1. const ele = element(by.css(div.ca>button.apply-now));
2. const ele = element(by.buttonText('Apply'));

如果正常点击不适合您,请尝试使用以下执行程序来点击按钮

await browser.executeScript("arguments[0].click()", ele);

答案 1 :(得分:0)

deepcss定位器存在问题,无法正常工作,但可以在影子DOM中查找元素。请参考以下链接以找到其他阴影dom元素的方法。

Protractor - shadow DOM

答案 2 :(得分:0)

拉取请求https://github.com/angular/protractor/pull/4786尚未合并。我已经实施了建议的解决方法(https://github.com/angular/protractor/issues/4367),然后它起作用了。