量角器:为什么在找不到元素错误时测试不会失败?

时间:2017-05-19 14:48:44

标签: protractor chai cucumberjs

这是我的测试堆栈:
“chai”:“^ 3.5.0”,
“chai-as-promise”:“^ 6.0.0”,
“黄瓜”:“^ 1.3.3”,
“量角器”:“~5.1.2”,
“量角器 - 黄瓜 - 框架”:“^ 3.1.0”,
+ selenium-server-standalone-3.4.0.jar

当我运行我的场景并且找不到一个元素时(自上次运行测试以来DOM已经改变),所有步骤都是绿色的,但测试以异常结束:

  

[15:51:49] E / launcher - 使用定位器找不到任何元素:by.cssContainingText(“checkbox”,“énergie”)
  [15:51:49] E / launcher - NoSuchElementError:找不到使用locator的元素:by.cssContainingText(“checkbox”,“énergie”)

我希望测试失败并显示红色结果,失败的步骤应抛出异常消息。这是我使用Behat时的行为。有没有配置量角器或黄瓜-js的东西?

编辑:

这是我的实施:

this.When(/^I fill "([^"]*)" step$/, function (step) {    
    element(by.cssContainingText("checkbox", "Électricité")).click();  
    element(by.cssContainingText("checkbox-multi", "Chauffage")).click();  
    element(by.buttonText("Suivant")).click();  
});

3 个答案:

答案 0 :(得分:1)

如果进程以199返回代码退出,那么量角器将捕获该异常并结束该过程。您需要告诉它忽略未捕获的异常,如show here

编辑:

您还需要返回最后一个承诺,以便黄瓜知道该步骤何时实际完成。在您的步骤定义中,除了将这些点击计划发生然后返回之外,其他任何事情都没有。

return element(by.buttonText("Suivant")).click(); 

答案 1 :(得分:0)

我还没有看到您的步骤实现,但我认为您的代码中存在“错误”。我们通常看到的错误是:

  • 步骤实现已完成回调,但尚未返回回调
  • 步骤实施已经完成了承诺,但承诺没有得到解决。

在这里,您将找到两者的示例实现。请尝试一下,看看是否有帮助,否则请在此处粘贴您的步骤实施,以便让我们更好地为您提供帮助。

// With Callbacks
this.Then(/^I expect it to become green$/, function(callback) {
  expect(element(by.css('#selector')).getText())
    .to.eventually.equal('I am green').and.notify(callback);
});

// With Promises
this.Then(/^I expect it to become green$/, function() {
  return expect(element(by.css('#selector')).getText())
    .to.eventually.equal('I am green');
});

答案 2 :(得分:0)

this解决了我的问题。现在很清楚,我必须编写DOM中所有可能的错误。它添加了很多代码,我怀疑它也会减慢我的测试...