javascript - Polymer UI 元素阴影根不支持使用 selenium webdriver 的自动化
问题描述
我正面临使用 selenium webdriver 自动化聚合物 ui 页面的问题。阻止硒自动化启动的原因是聚合物成分中的“影子根”元素。请提出一些例子或想法来解决这个问题。selenium 是否支持聚合物 ui 自动化?
解决方案
没有硒不支持它。要么您必须使用 documant.querySelector(...).shadowRoot 在 selenium 中使用 javascript 执行器,要么使用“/deep/”组合器。最好的是“/deep/combinator”,因为当您处理多级影子 DOM 时,querySelector 很烦人。
我能够通过以下方式访问所有阴影根元素
driver.find_elements_by_css_selector('body/deep/.layout.horizontal.center')
这将可以访问具有复合类名称“布局水平中心”的元素,而不管它具有多少阴影根。
但这仅适用于 chrome 驱动程序,我看到注释“/deep/”是一种已弃用的方法。
2019 年 2 月 13 日编辑 您可以使用此项目https://github.com/sukgu/shadow-automation-selenium。最初为 ruby Watir 框架开发并成功运行,但您可以将其用于 selenium webdriver 现有框架或任何支持调用 javascript 方法的现有 webdriver。它还将缩短您的测试用例开发时间和维护时间。它使您的代码更具可读性和排序,这将有助于您在调试时间。
值得花 5 分钟阅读说明与当前框架或新框架集成是多么容易的说明。
推荐阅读
- c - C - 努力理解如何在 if/while 循环中使用 int 函数
- python - 如何在 Python 或 R 中的数据时间序列中找到局部最大值和局部最小值的趋势线方程
- javascript - 如何在 React 应用程序的嵌套数组中正确渲染 div
- java - 在 O(log n) 中获取二叉树的大小
- python - 在 Python 中定义接受 2 个输入的函数
- android - 安卓无法调节音量
- flutter - 如何将 AppBar 放在状态栏下方?
- c - 我正在尝试制作一个程序来仅使用系统调用来比较 .txt 文件
- javascript - Selenium 中的 execute_script() 有什么作用
- c# - VS.NET git新体验