element(by.binding('binding-name'))失败,而element(by.css('ng-bind =“binding-name”'))工作正常

时间:2016-11-28 22:41:30

标签: selenium-webdriver protractor

element(by.binding('binding-name'))失败的原因是什么?它抛出错误

  

失败:预期'by.binding(“binding-name”)'存在且可见。 1659年后驾驶员等待。上次webdriver错误:错误:40003ms后等待超时

但如果我将其更改为element(by.css('ng-bind="binding-name"')),则可以正常使用。

这用于我的测试的注销功能

function logOut() {

element(by.binding('binding-name')).click() //works fine with element(by.css('ng-bind="binding-name"'))
    .then(function () {
        return element(by.css('[ng-click="LogOut()"]')).waitReady();
    }).then(function (tab) {
        return tab.click();
    });
}

另外,我没有更改ignoreSynchronization标志中的任何内容。

3 个答案:

答案 0 :(得分:0)

等待尝试:

 browser.wait(EC.presenceOf(element(by.binding("binding-name"))), 30000).then(function () {
        browser.wait(EC.visibilityOf(element(by.binding("binding-name"))), 30000).then(function () {
      element(by.binding('binding-name')).click();

});
});

它可能会很快找到该元素并尝试在它出现在DOM之前单击它。

答案 1 :(得分:0)

试试这个:

element(by.binding('binding-name')).then(function(ele){
      ele.click();
    });

答案 2 :(得分:0)

从@sanja的回答中,我得到了方向 - 角度binding标签出了问题。

当我进行更详细的检查时,我发现我在生产环境中调用debugInfoEnabled(false)来提升性能,但它对量角器的API产生了负面影响。 (实际上,那就是debugInfoEnabled的全部内容)

谢谢大家的帮助,非常感谢!