我正在使用Protractor 5.4.2来测试用Polymer.js创建的网页。我有一个具有多层阴影根的网页。我必须选择一个位于第10个卷影根下的输入。要遍历到第10级,我需要从第一个影子根移动,或者我可以直接访问第10个影子根?
发布于 2020-01-09 10:02:16
我在影子DOM上也遇到了同样的问题。我使用by.js (http://www.protractortest.org/#/api?view=webdriver.By.js)定位器在页面上运行我的自定义js代码。其结果是ElementFinder,它实际上表示了卷影dom内部元素。
class HomePage {
get shadowRoot(): ElementFinder {
return element(
By.js(function (elem) {
try {
// querySelectorAll returns array-like object, so converting it to Array with this:
return Array.prototype.slice.call(
document.querySelector(elem).shadowRoot.querySelectorAll('#mdr-ibe')
);
} catch (err) {
// using try/catch to avoid uncaught errors
return [];
}
}, 'css-locator-of-element-with-shadow-root')
);
}
public async startSearch() {
// Using chaining to search for elements inside shadowRoot:
const startSearchButton = this.shadowRoot.$('button.start-search')
await browser.wait(EC.elementToBeClickable(startSearchButton));
await startSearchButton.click();
}
}
但请记住-使用卷影根元素在firefox中不能很好地工作
https://stackoverflow.com/questions/59659590
复制相似问题