angular - 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?
解决方案
你可以使用这个插件query-selector-shadow-dom。在你的 conf.js 文件中添加这个
plugins: [{
package: 'query-selector-shadow-dom/plugins/protractor'
}],
然后现在使用 shadow 切换到 iframe by.shadowDomCss
。
推荐阅读
- authentication - Testcafe 使用令牌重定向
- html - 如何阻止父容器调整大小以适应动态内容
- javascript - 在二维数组/矩阵中查找最大和子矩阵
- angular - 将多个参数传递给 Angular 中的路由器导航
- python - 在每个元素的位置替换字符
- mongodb - 查找第二个集合的数组具有来自第一个集合的数组的单词
- pandas - 在 Python 中提取和删除大型数据集的停用词
- sql-server - SQL Server 静默安装不起作用
- django - 谁能向我解释 Django Plotly 的基础知识?
- android - React Native Metro 无限“重新加载”