Javascript 在量角器中启用元素时单击

Javascript 在量角器中启用元素时单击,javascript,angularjs,selenium,jasmine,protractor,Javascript,Angularjs,Selenium,Jasmine,Protractor,在页面上启用时,我必须单击右箭头按钮 这是我的代码: var sig = element(by.id('#right_button')); sig.isEnabled().then(function (result) { while (result) { sig.click(); return sig; } } 它只点击两次,我需要在元素启用时点击。我该怎么做?在开始执行循环之前,确保元素在DOM上,因为循环的执行速度比我们想象的要快得多。可能在

在页面上启用时,我必须单击右箭头按钮

这是我的代码:

var sig = element(by.id('#right_button'));
sig.isEnabled().then(function (result) {
    while (result) {
        sig.click();
        return sig;
    }
}

它只点击两次,我需要在元素启用时点击。我该怎么做?

在开始执行循环之前,确保元素在DOM上,因为循环的执行速度比我们想象的要快得多。可能在单击某个元素之前等待该元素加载就可以做到这一点。或者使用函数调用,这是最好的方法。这是你可以做到的-

var EC = protractor.ExpectedConditions;
var sig = element(by.id('#right_button'));

(function clickIt(){
  browser.wait(EC.presenceOf(sig), 2000).then(function(){
    sig.isEnabled().then(function (enabled) {
        if(enabled){
            sig.click().then(function(){
              clickIt.call();
            });
        }
    });
    });
})();
希望有帮助。

通过以下方式解决:

    var sig = element(by.id('#right_button'));
    reclick = function (sig) {
        sig.isEnabled().then(function (result) {

            while (result) {
                sig.click();
                return reclick(sig);
            }

        });
    };
    reclick(sig);

我也要用这种方法来测试。谢谢!可能有语法错误吗?}browser.sleep(3000);}(); }@温利努兹,是我的错。我没有合上
then()
的括号。更新了答案。谢谢:)非常感谢你的回答和评论。我已经测试了代码,它只点击了一次:(当按钮处于启用状态时,它不会跟随单击。@winlinuz,您是否也使用
浏览器.wait()
函数尝试过它?您必须等待元素被启用。使用组合代码更新了答案。如果您的答案解决了问题,请将其标记为答案。谢谢