【问题标题】:Protractor - wait for repeater elements量角器 - 等待中继器元素
【发布时间】:2015-10-06 12:10:03
【问题描述】:

我正在使用 Protractor 进行 e2e 测试。目前我正在使用很多工作流超时。我想用browser.wait 替换它。问题是我并不总是知道要等什么。例如切换到其他帧时。 这个特定的问题是等待中继器元素显示。 这是我当前的代码:

   flow.timeout(5000);

   element.all(by.repeater('whatsNewItem in homePageWhatsNewItems')).count().then(function (firstCount) {

    console.log("number of WhatsNew=" + firstCount);
    expect(firstCount >= 5).toBeTruthy();
  });

我想替换 browser.wait(.....) 中的 flow.timeout 有什么想法吗?

【问题讨论】:

    标签: javascript protractor wait angularjs-e2e e2e-testing


    【解决方案1】:

    如果您知道要等待什么元素,那么很容易使用量角器的ExpectedConditions 来等待一个元素出现在页面上。方法如下-

    var EC = protractor.ExpectedConditions;
    var repeaterElement = element(by.repeater('whatsNewItem in homePageWhatsNewItems'));
    
    //Wait up to 10 seconds for elements to be visible
    browser.wait(EC.visibilityOf(repeaterElement), 10000) 
    .then(function(){
        //Perform any operation that you want after waiting for the element to appear
    });
    

    如果您根本不知道要等待哪个元素,请始终检查最后加载的元素并等待该元素出现。通过这种方式,可以避免错误。希望对您有所帮助。

    【讨论】:

    • 似乎可行。谢谢!只有一件事 - 它应该是'element(by.repeater ...' - 排除'all'。
    • @user2880391 更新了代码。我以为你的 HTML DOM 中有很多中继器。如果它帮助您将其标记为答案。谢谢。
    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多