[英]E2E Test with Protractor and Angular: Make protractor wait while browser is loading
[英]Angular e2e protractor browser.wait doesnt work
我的项目中的 browser.wait function 有问题:
it("should display plan description", async () => {
//changing description in LIC
await app.navigateTo(LIC_PLANS_URL);
browser.sleep(2000);
dashboard.filtrByTitle = PLAN_TITLE;
browser.sleep(2000);
await dashboard.plansEdit.click();
browser.sleep(2000);
dashboard.description = PLAN_TEST;
browser.sleep(2000);
await dashboard.savePlan.click();
//checking that the plan description has changed in ACC
app.navigateTo(ACC_DASHBOARD);
browser.sleep(4000);
expect(dashboard.planDescription.getText()).toContain("automation_test");
我可以用这个 browser.sleep 功能做点什么吗? 我认为这不是进行测试的正确方法,但没有它会产生超时错误。
我试图解决这个问题:
var EC = browser.ExpectedConditions;
browser.wait(EC.visibilityOf(dashboard.plansEdit),5000);
但它根本没有帮助,我使用的是 protractor 7.0.0。 任何人都知道如何解决这个问题。
你说browser.sleep()
不是一个好习惯是正确的,应该用显式等待代替。
在visibilityOf()
的特定情况下,Protractor 假定元素已经存在并尝试立即定位它,如果它不存在,因此不可见,它将引发异常。 但是您可以使用 presentOf presenceOf()
方法等待元素出现在 html DOM 中您指定的任何给定时间(默认为 5000 毫秒)。
您可以制作一个 function 等待元素的存在,然后等待其可见性/可点击性:
const EC = browser.ExpectedConditions; const waitForEl = async (ele) = { await browser.wait(EC.presenceOf(ele), 5000); return await browser.wait(EC.visibilityOf(ele), 5000); }; // call it: await waitForEl(dashboard.plansEdit);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.