我的角度应用程序中有一个e2e量角器测试。我刚刚连续运行了几次完全相同的测试,它通过了大约5%的时间,但由于以下屏幕截图中的错误而失败。
测试:
it('should open the cart with the cart button in the header', () => {
page.navigateTo('/calendar/day/(dmy:27-9-2018)');
page.cartButton().click();
expect(element(by.css('h2.cart-header')).isPresent()).toBe(true);
});
量角器暂停启动的chrome实例表明单击了按钮并且存在h2元素(请参见底部的图像)。
我尝试过的
... header', async () => { ...
expect(await element(by.css('h2.cart...
browser.sleep(1000)
.toBe(true)
,.toEqual(true)
和.toBeTruthy()
是什么原因导致此错误,我该如何解决?
答案 0 :(得分:0)
您可以使用 Jasmine 回调来断言异步行为。 Jasmine 测试提供了额外的参数作为回调参数。完成断言后,您可以调用回调 API。
示例:
it('should have a button element present', function(done) {
browser.get('http://juliemr.github.io/protractor-demo/');
var gobtn = element(by.id('gobutton'));
gobtn.isPresent().then( (result) => {
expect(result).toBe(true);
done();
});
});
答案 1 :(得分:-1)
请使用browser.ignoreSynchronization = true;
答案 2 :(得分:-1)
isPresent()返回您需要解决的承诺。 是的,请使用async()函数+等待以轻松解决它 更多的是,像这样使用ExpectedConditions模块:
let cart = await element(by.css('h2.cart-header'))
await browser.wait(ExpectedConditions.visibilityOf(cart), 5000, "Cart is not visible even in 5 seconds!")