【发布时间】:2019-12-17 05:02:38
【问题描述】:
我是量角器的新手,从 Angular 应用程序的自动化测试开始。我有一个测试,我需要使用多个 browser.sleep() 来实际等待元素呈现并单击它们。使用 browser.sleep() 可以正常工作,但是当我尝试使用 async/await 时,测试失败,因为它不等待元素。
在我使用 async/await 之前,我确实设置了 SELENIUM_PROMISE_MANAGER: false
这个有效:
browser.get(http://localhost);
browser.sleep(1000);
element(by.cssContainingText('.title1, 'text1')).click();
browser.sleep(1000);
element(by.cssContainingText('.title2', 'text2')).click();
这个不起作用,说找不到第二个元素:
it('should navigate to screen', async function() {
browser.get(http://localhost);
browser.wait(function () {
return element(by.css('.top-navigation')).isPresent();
}, 5000);
await element(by.cssContainingText('.title1', 'text1')).click();
await element(by.cssContainingText('.title2', 'text2')).click();
});
【问题讨论】:
-
我对 Protractor 了解不多,但是
element(...).click()会返回一个承诺吗?如果没有,await运算符不会做太多事情。它只能等待一个承诺。 -
在
browser.get(..)和browser.wait(..)之前添加await。 -
不幸的是,在
browser.get(..)和browser.wait(..)之前添加await没有帮助,找不到元素....但是 ExpectedConditions 的解决方案似乎是工作
标签: javascript angular testing async-await protractor