我正在测试可能会出现随机覆盖的页面。
这些HTML / CSS元素会阻塞整个屏幕,并在显示时强制您将其关闭。
如何编写茉莉花测试it("....")
,以便我可以有条件地
在初始屏幕加载时检查此弹出窗口。
用click()
关闭弹出窗口
检查是否确实关闭了弹出窗口
而不使用expect
,因为此弹出窗口并不总是存在,并且测试用例将/可能失败。
这是我目前拥有的,如果没有对话框覆盖,它会失败。
茉莉花测试用例说明
describe("close header warning if opened", function () {
it("should check for header warning", function () {
writeTitleToLog("close header warning if opened");
element(by.css('.header-warning-container')).isDisplayed().then(function (displayed) {
if(displayed) {
element(by.css('.close-container')).click();
}
});
});
it("should not have the header warning", function () {
expect(element(by.css('.header-warning-container')).isPresent()).toBeFalsy();
});
});
测试输出
landing page
should check for header warning, and close it - fail
should not have the header warning, once it is closed - pass
最佳答案
看看这是否适合您。
在执行操作时,请使用isDisplayed进行检查。然后,如果元素存在。单击关闭。等待它关闭。然后,仍然在if块中,以确保它已关闭。如果没有警告,这应该不会失败,因为它将跳过预期。
overlays.headerWarning.isDisplayed().then(function(result){
if(result){
overlays.headerWarningCloseButton.click();
browser.wait(protractor.until.elementIsNotVisible(overlays.headerWarningCloseButton), 3000, 'Header warning overlay did not close');
expect(overlays.headerWarning.isDisplayed()).toBeFalsy('Header was displayed after attempted close');
} else {
//do nothing
}
});