Protractor browser.wait 不等待

2024-02-07

我假设 browser.wait 应该是一个阻塞调用,但它没有按我的预期工作。这是我的样本:

describe("browser.wait", function() {
    beforeEach(function() {
        browser.wait(function() {
            console.log('1 - BeforeEach WAIT');
            return true;
        });
    console.log('2 - BeforeEach after wait');
});

afterEach(function() {
    browser.wait(function() {
        console.log('4 - afterEach WAIT');
        return true;
    });
    console.log('5 - afterEach after wait');
});

it('should probably actually wait.', function() {
    console.log('3 - IT statement');
    expect(1).toBe(1);      
});

现在,因为我假设 browser.wait 实际上是阻塞的,所以我认为我的 console.log 调用将按顺序运行; 1,2,3,4,5;

我得到的实际输出是:

2 - BeforeEach after wait  
1 - BeforeEach WAIT  
3 - IT statement  
5 - afterEach after wait  
4 - afterEach WAIT  

我怎样才能让 browser.wait 等待?或者我完全使用了错误的功能?我需要阻止一些事情,直到我的浏览器到达下一次调用所需的位置。


这都是关于承诺的(实际上每个量角器问题都是关于承诺的)。

browser.wait() http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.wait不是阻塞调用,它安排一个命令等待一个条件:

安排命令等待条件成立,如所定义 一些用户提供的函数。如果评估过程中出现任何错误 等等,他们将被允许传播。如果有条件 返回一个 webdriver.promise.Promise,轮询循环将等待它 进行解析,并使用解析值来评估是否 条件已满足。承诺的解决时间是 考虑等待是否超时。

它不会立即调用您传入的函数,它会安排一个命令并等待 Promise 得到解析(如果内部函数返回一个 Promise)。

您可以使用then()在这种情况下要得到正确的顺序:

beforeEach(function() {
    browser.wait(function() {
        console.log('1 - BeforeEach WAIT');
        return true;
    }).then(function () {
        console.log('2 - BeforeEach after wait');
    });
});

请参阅此处的用例:

  • 我怎样才能等待一个条件? https://stackoverflow.com/questions/22072327/how-can-i-wait-for-a-condition
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Protractor browser.wait 不等待 的相关文章

随机推荐

  • 在 Objective-C 中设置文件权限

    我设法得到了一个漂亮的 ftp 对象 它的级别非常低并且很容易适应 我使用它通过 FTP 将文件从一台 Mac 传输到另一台 Mac 现在 我遇到的问题是 当传输的文件到达目的地 另一台 Mac 时 访问权限会以随机间隔设置为 所有人 无访
  • 不可变集合上的非可变“添加”方法的最佳名称是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动
  • “‘字段列表’中的未知列”,但列确实存在

    DROP TABLE IF EXISTS transactions CREATE TABLE transactions id int 11 unsigned NOT NULL AUTO INCREMENT purchase date dat
  • 使用 php 获取下一个 15 日和/或 30 日的日期?

    我需要获取即将到来的日期15th and 30ths未来几个月的日期 如果二月在范围内 当然必须是 28 29 我可以使用 mktime strtotime 或者使用其他方法来执行此操作吗 我得到了这个 但当然这只是为了得到这个月和下个月的
  • 允许保存比较标记的差异工具

    是否有一个 diff 工具可以保存比较标记 为了澄清这一点 我想保存两个文件的实际比较 以显示差异 然后发送给某人进行审查 EDIT 这里有很多好的答案 就我而言 我已经有一份副本无可比拟 http scootersoftware com但
  • Promise.then 作业执行顺序

    规范说 https www ecma international org ecma 262 7 0 index html sec jobs and job queues 第 5 段 来自单个作业队列的 PendingJob 记录始终在 先进
  • html 脚本 src="" 用按钮触发重定向

    我有以下用于登录的 login html 页面位于设计文件夹中 h3 Login h3
  • std::copy 和 std::vector 问题

    我明白为什么这会导致段错误 include
  • 保护 Linux Web 服务器的公共访问

    我想设置一个便宜的 Linux 机器作为 Web 服务器来托管各种 Web 技术 我想到了 PHP 和 Java EE 但我将来也想尝试使用 Ruby 或 Python 我相当精通设置 Tomcat 在 Linux 上运行以提供 Java
  • UILineBreakMode 与 NSLineBreakMode

    我看到一些 UIStringDrawing 方法已更新为使用 NSLineBreakMode 而不是 iOS 6 0 中的 UILineBreakMode E g CGSize sizeWithFont UIFont font constr
  • 原型继承最佳实践?

    我刚刚接触 JavaScript 并试图了解原型继承 似乎有多种方法可以达到相同的效果 所以我想看看是否有任何最佳实践或理由以一种方式做事而不是另一种方式 这就是我要说的 Method 1 function Rabbit this name
  • 2页出现死锁

    我正在解决在生产环境中看到的一些死锁 我对此很陌生 但有些事情对我来说似乎很奇怪 所以我有下面的死锁图 死锁的右侧是更新 如下所示 UPDATE order sub line SET sub line status 300 WHERE or
  • 从 C# 调用方中的非托管 DLL 捕获标准输出

    我有一个 C 应用程序通过一些 C CLI 编组代码调用本机 C DLL C gt C CLI gt C 无 CLR 我希望 DLL 在运行时将字符串更新发送回调用应用程序 目前 非托管 DLL 将输出写入 stdout 本质上我需要在 U
  • AngularJs 将 HTML 中每个 ng-repeat 的实例传递给指令

    我认为这应该很简单 但我错过了一些东西 我怎样才能通过flowObj in my ng repeat下面是我的指令 我想将它传递给我的指令 然后单击 使用它FlowObj 然后应用一些逻辑 我尝试在我的指令中使用注释代码 scope tes
  • Ruby:为什么我不能创建新文件?

    我正在尝试创建一个 json 文件并写入它 我的代码如下所示 def save as json object f File new file json f puts object to json w f close end save as
  • android-support-v4 删除未使用的类

    实际上 我正在尝试将应用程序的 apk 缩小到尽可能小的大小 我目前导入了 android support v4 jar 文件 我的问题是 如何从此 jar 文件中删除未使用的类 经过一番搜索后没有找到任何信息 如果 ProGuard 是解
  • 如何使用 Salt 创建 SHA256 哈希?

    我目前正在开发一个 Visual Studio C Windows 窗体项目 但是 我对 SHA256 salted 的工作原理感到困惑 我在网上找到了一些例子 但无法理解如何调用这个函数 我想在连接到数据库 Microsoft Acces
  • 如何在 ag-grid 表的页脚中启用或显示总行数

    我正在使用 Ag Grid 表 我想在表的页脚中显示总行 我如何通过使用 2 个表来实现它 第 1 个表用于实际数据 第 2 个表用于总计行 它与普通的不可滚动表格一起工作正常 但如果它是固定或可滚动表格 则顶部表格会滚动 但底部表格会粘在
  • 在 HashMap 或 LinkedList 中将嵌套类设为静态的原因是什么? [复制]

    这个问题在这里已经有答案了 在大多数情况下 我看到嵌套类是static 让我们举个例子Entry上课于HashMap static class Entry
  • Protractor browser.wait 不等待

    我假设 browser wait 应该是一个阻塞调用 但它没有按我的预期工作 这是我的样本 describe browser wait function beforeEach function browser wait function c