使用量角器我试图点击一个按钮,直到它不再显示。目前这是while循环,我正在尝试这样做:
while(i < 5) {
browser.wait(EC.visibilityOf(page.loadMoreButton), 15000).then(function(result) {
if(!result) {
// wait for loader to disappear
browser.wait(EC.invisibilityOf(page.loader), 15000);
// click on load more button
page.loadMoreButton.click();
// wait for loader to disappear
browser.wait(EC.invisibilityOf(page.loader), 15000);
console.log("FOUND load more button!");
} else {
console.log("Did NOT find load more button!");
}
});
i++;
};
我正在写一个控制台,只是为了看看它到底失败了。我不知道这个按钮会出现多少次,所以我知道while i < 5
不是最佳解决方案。
答案 0 :(得分:1)
function clickIfThere(){
var bool = page.loadMoreButton.isDisplayed();
browser.driver.sleep(0).then(function () {
if(bool){
// <Your Code>
browser.wait(EC.invisibilityOf(page.loader), 15000);
page.loadMoreButton.click();
browser.wait(EC.invisibilityOf(page.loader), 15000);
// </Your Code>
clickIfThere();
} else {
console.log("Did NOT find load more button!");
}
});
}
it('should keep clicking', function ()
clickIfThere();
}
这是你在找什么?
答案 1 :(得分:1)
找到一个完美的解决方案。
clickLoadMoreButtonUntilNotDisplayed = function() {
// click on load more button until it is no longer visible
loadMoreContainer.isDisplayed().then(visible => {
if (visible) {
// wait for loader to disappear
browser.wait(EC.invisibilityOf(loader), 15000);
// click on load more button
loadMoreButton.click();
// wait for loader to disappear
browser.wait(EC.invisibilityOf(loader), 15000);
// call function
clickLoadMoreButtonUntilNotDisplayed();
} else {}
}, err => {})
};
it('should keep clicking', function ()
clickLoadMoreButtonUntilNotDisplayed();
}
答案 2 :(得分:0)
最优雅的方法是递归调用方法。您已定义了检查元素是否显示的方法。如果是这样 - 点击它并再次检查。
它可能看起来更像是:
public checkLoadMoreButton() {
return page.loadMoreButton.isDisplayed();
}
this.checkLoadMoreButton().then((result) => {
if (result) {
page.loadMoreButton.click();
this.checkLoadMoreButton();
}
}