我正在测试可能会出现随机覆盖的页面。

这些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
        }
    });

10-06 07:58