在网站上我有时会有一些额外的按钮,用于恢复表单中填写的自动保存数据,随机时刻弹出(有时会有人测试某些内容和关闭表单,这会导致弹出按钮)。我尝试使用以下代码Continue if element is not visible in protractor:
let DoNotRefillBtn=element.all(by.className('modal-button-no'));
var isApproachable = function(element) {
return element.isPresent().then(function (present) {
return present
? element.isDisplayed()
: false;
});
};
describe(...)
it('Open the form:', function () {
browser.driver.get('foo');
browser.sleep(1000);
isApproachable(DoNotRefillBtn).then(function(approachable) {
if (approachable) {
DoNotRefillBtn.click();
browser.sleep(500);
}
else {
browser.sleep(300);
}
});
点击正确,但点击后会在Failed: element not visible
行引发错误DoNotRefillBtn.click();
。
为什么程序会点击并抛出一个错误,即该东西不可点击(点击后)?
答案 0 :(得分:0)
我使用了一种解决方法,该按钮附带状态消息“您要重新填写表单吗?”。因此,当我检查状态消息并单击按钮时,似乎正在工作:
let StatusMessage=element.all(by.className('status-message'));
let DoNotRefillBtn=element.all(by.className('modal-button-no'));
var isApproachable = function(element) {
return element.isPresent().then(function (present) {
return present
? element.isDisplayed()
: false;
});
};
describe(...)
it('Open the form:', function () {
browser.driver.get('foo');
browser.sleep(1000);
isApproachable(StatusMessage.get(8)).then(function(approachable) {
if (approachable) {
DoNotRefillBtn.get(0).click();
browser.sleep(500);
}
});
});
});
StatusMessage.get(8)
为8,因为还有一些具有相同类的消息,但未显示。我计算了status-message
是哪一个它似乎正在工作 - 如果显示则关闭弹出窗口,但是当它不显示时跳过。
合适地检查按钮并单击它会产生一些问题