单击量角器中的复选框时出错

时间:2017-02-20 06:28:16

标签: typescript protractor

我正在尝试点击量角器中ng-repeater中的一个复选框以跟随html

enter image description here

我正在使用的代码是;

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)

此外,我还提到了以下链接解决方案。虽然没有运气。

提前致谢。

enter link description here

1 个答案:

答案 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()