我正在尝试点击量角器中ng-repeater中的一个复选框以跟随html
我正在使用的代码是;
element.all(by.repeater('user in siteUsers | filter: { SiteId: site.SiteId }'))
.then(function (ElementArray) {
ElementArray[0].all(by.tagName('input')).get(0).click();
}).catch((err) => {
console.log(err);
});
但我得到以下错误:
TypeError: Cannot read property 'all' of undefined
at C:\AGLRepository\Agl.Digital.SolarCommand.WebApi\e2eTests\src\components\settings\addRemoveUsers\addRemoveUsers.page.ts:87:32
at ManagedPromise.invokeCallback_ (C:\Users\MyDevMachine\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1379:14)
at TaskQueue.execute_ (C:\Users\MyDevMachine\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2913:14)
at TaskQueue.executeNext_ (C:\Users\MyDevMachine\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2896:21)
此外,我还提到了以下链接解决方案。虽然没有运气。
提前致谢。
答案 0 :(得分:0)
您错误地使用了.all()
。查看以下官方文档摘录
element.all(locator).all(locator)查看代码 ElementArrayFinder.prototype.all
可以链接对ElementArrayFinder的调用来查找数组 元素使用此ElementArrayFinder中的当前元素作为 初始点。此函数返回一个新的ElementArrayFinder 将包含找到的子元素(也可能是空的)。
您正在使用此功能 - ElementArray[0].all(by.tagName('input')).get(0).click()
正确使用 - ElementArray.all(by.tagName('input')).get(0).click()
有关最佳做法的其他信息。你无需解决element.all()
的承诺。你可以做类似下面的事情
element.all(by.repeater('blah in blahs')).all(by.tagName('input')).get(0).click()