我是codeceptJS的新手,但我最好能告诉它只是对yield不起作用。
'use strict';
Feature('Testing Begins');
Before((I) => {
I.resizeWindow(1500, 1000);
I.amOnPage('http://absolutenet.com');
});
Scenario('ANI testing', function*(I){
I.waitForText('bring your site to life');
I.amOnPage('http://www.absolutenet.com/');
let title = yield I.grabTitle();
console.info(title);
I.see('bogus text that is not there');
});
我尝试过几个抓取命令以及executeScript。我知道命令正在运行,因为由于某种原因,在yield之后执行一行或两行,所以我可以输出我指定的变量。但是,我永远不能使用它,因为浏览器关闭并且脚本终止。更糟糕的是,我可以进行显然无效的测试(I.see('一些虚假的不存在的文本');)并且Scenario以成功退出!
以上是现场直播,因此您可以执行它以查看问题。如果重要的话,使用Linux和FireFox进行测试。
有人能举例说明如何使用产量并继续测试吗?
更新:开发人员说这是一个错误,很快就会修复。
答案 0 :(得分:2)
我在CodeceptJS自述文件中看到以下内容:
使用CodeceptJS进行场景驱动的功能和验收测试 将尽可能简单和干净。你不用担心 关于NodeJS的异步性质或关于Selenium的各种API, PhantomJS,Protractor等,作为CodeceptJS统一它们并制作它们 因为他们是同步的。
所以你不应该需要屈服来进行测试。 CodeceptJS是WebdriverIO的包装器,它负责处理这些异步任务。您应该能够执行以下操作:
Scenario('ANI testing', function*(I){
I.waitForText('bring your site to life');
I.amOnPage('http://www.absolutenet.com/');
I.seeInTitle('my page title');
});
尽管为了试图更彻底地回答你的问题,但codeceptJS有一个很好的例子来使用生成器:
Scenario('use page title', function*(I) {
// ...
var password = yield I.grabTextFrom('#password');
I.fillField('password', password);
});