webdriver - Protractor 、 cucumber 和 Chai 如所 promise 的 : When chai assertion fails

标签 webdriver protractor chai cucumberjs chai-as-promised

我正在使用 Protractor 来运行我的 cucumber 测试。在我的测试中,我有以下断言:

label.getText().then(
                function(labelText){
                    labelText = labelText.trim();
                    console.log('label text: ' + labelText);
                    chai.expect(labelText).to.equal(arg1);
                    callback();
                },
                function() {
                    callback.fail('Could not get page label text');
                });

当断言正确时就没有问题。但是,当我的 labelText 与 arg1 不同时,我仍想继续运行它,但我不知道如何在其中添加异常或失败回调。目前我的应用程序刚刚退出。我知道这是因为我没有使用失败回调(我想知道我应该在哪里使用它)。

我也不确定是否应该放置回调();现在在哪里。

我正在网上寻找解决方案,我能找到的只是使用 Mocha 的示例。我没有使用摩卡咖啡或 Jasmine 咖啡。我只是使用带有 Protractor 的 Cucumber 框架。由于 Cucumberjs 没有断言库,因此我为此添加了 chai-as-promised。谢谢!

最佳答案

当回调中的 expect() 调用失败时,

Cucumber.js 似乎存在问题。由于您已经安装了 chai-as-promised,请尝试执行以下操作:

var labelText = label.getText().then(
  function(labelText){
    labelText = labelText.trim();
    console.log('label text: ' + labelText);
    return labelText;
  });
chai.expect(labelText).to.eventually.equal(arg1).then(callback);

我从 this comment 得到了这个解决方法这对我来说效果很好。

关于webdriver - Protractor 、 cucumber 和 Chai 如所 promise 的 : When chai assertion fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27067673/

相关文章:

java - 使用 Selenium Webdriver Java 检索第 3 方和所有 Cookie

java - Selenium WebDriver - 如何按住鼠标右键?

selenium - 导出 WebDriver 代码 - Selenium IDE 与 Selenium Builder

javascript - 处理 Protractor 中的异步警报弹出窗口

angular - 公司代理背后的 Protractor (Angular-CLI)

javascript - Promise 和 for 循环 - 尝试验证多个元素文本

javascript - 如何强制函数在使用 Mocha/Chai 调用时抛出异常

java - 如何在不从其后代检索文本的情况下获取元素的文本

javascript - 在 Protractor e2e 测试中设置时区

node.js - 作为 node express 中间件被跳过的 Sinon stub