量角器:弹出元素的验证随机失败

Protractor: verification of pop up elements randomly fails

我正在使用 Protractor 验证并点击 Angular 页面上弹出 window 的元素。问题是验证随机失败。

我的规范文件:

describe('...
    it('...
        // initialize page object
        var home = new homePage();

        // hover over the shopping cart icon
        browser.actions().mouseMove(home.shoppingCartLink).perform();

        // pause browser for 4 sec
        browser.sleep(4000);

        // initialize page object
        var shoppingCartPreview = new shoppingCartPage();

        // hover over the shopping cart preview window
        browser.actions().mouseMove(shoppingCartPreview.window).perform();

        // verify elements are displayed
        expect(shoppingCartPreview.shopName.isDisplayed()).toBeTruthy();
        expect(shoppingCartPreview.price.isDisplayed()).toBeTruthy();
        expect(shoppingCartPreview.delete.isDisplayed()).toBeTruthy();

        // click on "Checkout" button
        shoppingCartPreview.checkoutButton.click();
    });
});

正如所写,问题是对于所有的验证,我得到的都是虚假的而不是真实的。我做错了什么?

我什至尝试了以下但没有成功:

// waiting for elements to be visible
browser.wait(EC.presenceOf(shoppingCartPreview.popUpWindow),10000);
browser.wait(EC.presenceOf(shoppingCartPreview.shopName),10000);
browser.wait(EC.presenceOf(shoppingCartPreview.price),10000);
browser.wait(EC.presenceOf(shoppingCartPreview.delete),10000);

问题是 - 你正在等待 - presenceOf() 它只检查 DOM 中元素的存在,因此它总是 return true 你是否弹窗是否可见。

你需要像这样利用 visibilityOf() - browser.wait(EC.visibilityOf(shoppingCartPreview.popUpWindow), 5000)