我正在等待一个承诺的解决方案使用黄瓜,柴和量角器。在发送回调之前,是否有一种方法可以使用柴等待发生某些事情(比如页面负载)?
我想要这样的东西:
browser.get(url).then(callback)我以为会在柴区:
browser.get(url).should.be.fulfilled.and.notify(callback);虽然当我这样做时,我只是得到一个超时,但我看到页面已经加载。我已经将其设置为:
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
var should = chai.should;我不想检查什么,我只是想确保页面加载。据我所见,大多数人就是这样做的:
browser.get(url);
callback();然后,只在Gherkins子句中使用assert或expect,但我希望等待页面在给定的时间或在给定的时间加载。
发布于 2016-08-17 15:52:50
我对您的问题的理解是,您希望CucumberJS中的异步CucumberJS表现为同步执行,这样一旦您完成了使用browser.get(url)的步骤,就会执行下一个步骤定义。如果这就是你的问题,那么,,我们可以-
您需要在步骤定义中使用return承诺或使用done回调。否则,黄瓜不知道异步操作何时完成。
当我使用return函数对结果执行一些操作时,我更倾向于使用.then承诺,如果不是,则使用.done回调函数,而且您现在不需要callbacks,CucumberJS现在支持promises。所以你的step文件应该是-
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
module.exports = function () {
this.Given(/^I launch the protractor demo page$/, function () {
return browser.get('http://juliemr.github.io/protractor-demo/');
});
});
this.When(/^I check the title of the page$/, function () {
return browser.getTitle().then(function(text){
console.log('title is - ' + text);
expect(text).to.equal('Super Calculator');
});
});https://stackoverflow.com/questions/38997394
复制相似问题