首页 > 解决方案 > Selenium - 在 shadow dom 中测试 iframe

问题描述

我有一个启用 ViewEncapsulation.ShadowDom 的角度应用程序,其中有一个 iframe。当我尝试编写量角器测试时,出现错误:

Failed: unknown error: no element reference returned by script

虽然我能够真正获得网络元素,但我无法使用它执行任何操作。

const root = element(by.css('app-root')).getWebElement();
    browser.driver
      .executeScript('return arguments[0].shadowRoot', root)
      .then((shadowRoot: WebElement) => {
        browser.switchTo()
          .frame(shadowRoot.findElement(by.css('iframe')))
          .then(()=>{
            element(by.css('.app-block')).getWebElement().then(el=>{
              console.log("EL:",el); //logs element
              browser.actions().mouseMove(el).perform(); //throws error
            });
          });
      });

有没有办法正确切换到嵌套在 shadow dom 中的 iframe?

标签: angularseleniumiframeprotractorshadow-dom

解决方案


你可以使用这个插件query-selector-shadow-dom。在你的 conf.js 文件中添加这个

plugins: [{
    package: 'query-selector-shadow-dom/plugins/protractor'
}],

然后现在使用 shadow 切换到 iframe by.shadowDomCss


推荐阅读