javascript - 在 Protractor 中,如何在准确的时间抓取多个值以用于具有大量推送通知的应用程序

标签 javascript selenium selenium-webdriver protractor

我正在使用 Protractor 为一个获得大量推送通知的应用程序创建自动化测试,问题是我尝试测试一个简单的逻辑

expect(A + B).toEqual(C);

问题是A、B、C取的时间不同,测试失败,有办法暂停浏览器以发送推送通知,执行测试,测试完成后继续。

或者还有其他我更乐意知道的方式吗?

element.all(by.css('#footer > span')).getTest().then(function(information){
       expect(information[0] + information[1]).toEqual(information[2]);
});

最佳答案

我假设在做出预期时只有不到 3 个通知。如果是这种情况,您可以添加显式等待来等待 N 个元素出现:

function waitForNElementsToBePresent(n) {
    return function () {
        return element.all(by.css('#footer > span')).count().then(function (count) {
            return count >= n;
        });
    }
}

browser.wait(waitForNElementsToBePresent(3), 5000);

element.all(by.css('#footer > span')).getText().then(function(information){
   expect(information[0] + information[1]).toEqual(information[2]);
});

关于javascript - 在 Protractor 中,如何在准确的时间抓取多个值以用于具有大量推送通知的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33348378/

相关文章:

c# - 有没有办法按所需顺序运行 Specflow 场景(C# Selenium)?

javascript - 如何使用 javascript 检查复选框是否已选中?

selenium - 如何增加 Selenium 网格 session 超时?

java - 如何滚动直到对象在弹出窗口中可见?

c# - C# Selenium 中的警报/确认/弹出处理

java - Java中的for循环捕获异常

javascript - 如何使用 js 或 jquery 在动态更改的 html 中获取最后评论?

javascript - 在哪里可以找到 MongoDB 触发的事件列表?

javascript - 在 meteor 中实现自动表单模式

selenium-webdriver - 获取文本的最佳方式是什么? getText() 不返回 google.co.in 中的链接文本