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()
函数尝试过它?您必须等待元素被启用。使用组合代码更新了答案。如果您的答案解决了问题,请将其标记为答案。谢谢