【发布时间】:2018-07-02 03:45:07
【问题描述】:
我在 Polymer/Angular 应用程序上使用 Protractor 和 Selenium 运行 e2e 测试。 大多数元素都在 shadow DOM 中(我设法使用自定义 css 定位器来处理它,但它使我的测试变得不稳定,因为 dom 中的任何更改都会破坏它们)。问题是开发人员已经实现了一个虚拟滚动列表: 滚动列表中只加载了几个项目,滚动时会加载下一个项目。 我问我的开发人员如何处理它,他们告诉我我必须获取 Web 组件并在没有量角器的情况下对其进行测试,也就是运行这样的命令:
document.querySelector('virtual-scroll').baseList
其中 baseList 是标签的公共属性。 我试过了
var element = browser.executeScript('return document.querySelector("virtual-scroll")');
element.then(function (el){
console.log(el.$.baseList);
});
但上面的命令返回一个 WebElement。有没有办法像 javascript querySelector 命令一样返回 HTML DOM 元素?
【问题讨论】:
-
我发现我可以使用这个命令:browser.executeScript('return document.querySelector("iris-app").baseList;')。它有效,但我仍然不明白为什么我不能只获取父母并调用他的属性。
-
尝试最少量的 Protractor 的 API
by.deepCSS(),它用于在 Shadow DOM 中通过 css 选择器查找元素,详情:protractortest.org/#/api?view=ProtractorBy.prototype.deepCss -
AFAIK 它已被弃用,这就是我使用自定义 css 定位器的原因。这些工作正常,这不是这里的问题。如果您误会了,我很抱歉,如果有人也有提示,这只是一个旁注。
标签: selenium selenium-webdriver protractor automated-tests end-to-end