Nightwatch,afterEach,browser.pause 不是函数

Nightwatch, afterEach, browser.pause is not a function

我想暂停每个测试。 我创建了这个函数:

afterEach:function(browser){
   browser.pause(2000);
},

但是当我 运行 测试时,我会得到错误:

TypeError: browser.pause is not a function

为什么?在测试中 browser.pause 是函数。

亲爱的朋友你要做"something"然后暂停! (即断言 url 然后暂停!)

有效吗?

afterEach:函数(浏览器){ 浏览器 .assert.urlEquals('http://www.google.com') .暂停(2000) },

我在 GitHub 上写了一个问题,我有一个解决方案:https://github.com/nightwatchjs/nightwatch/issues/921

解决:

使用

afterEach(done) {
  // ...
 done(); 
}

而不是

afterEach(browser, done) {
  // ...
 done(); 
}

beatfactor, on the linked GitHub issue 提供的答案是

When using afterEach you need to use the done callback argument always if you want to use the browser object. That is for backwards compatibility. So you need to do either:

afterEach(browser, done) {
  // ...
 done(); 
}

使用 afterEach 时,如果您想访问 browser 对象,则需要在 browser 之后添加 done 回调参数到您的函数中。

所以你的函数应该是这样的:

afterEach(browser, done) {
  // ...
 done(); 
}

注意必须调用done()表示测试完成

如果您在 afterEach 中只有一个参数,那么它就是 done 参数。

afterEach(done) {
  // ...
 done(); 
}

换句话说,如果你写

afterEach(browser) {
  // ...
}

browser 实际上是 done 回调。您已将其命名为浏览器,但事实并非如此。