繁体   English   中英

Angular e2e protractor browser.wait 不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM