0

我是 codeceptJS 的新手,但最好我能说它根本不适用于产量。

'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('some bogus non existent text');) 并且场景以成功退出!

以上是实时的,因此您可以执行它来查看问题。如果这很重要,请使用 Linux 和 FireFox 进行测试。

谁能给我一个如何使用yield并继续测试的例子?

更新:开发人员说这是一个错误,很快就会修复。

4

1 回答 1

2

我在 CodeceptJS 自述文件中看到以下内容:

使用 CodeceptJS,您的场景驱动功能和验收测试将尽可能简单和干净。您无需担心 NodeJS 的异步特性或 Selenium、PhantomJS、Protractor 等的各种 API,因为 CodeceptJS 将它们统一起来并让它们像同步一样工作。

所以你不应该需要 yield 来运行测试。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');
});

http://codecept.io/basics/

不过,为了尝试更彻底地回答您的问题,codeceptJS 有一个很好的使用生成器的示例:

Scenario('use page title', function*(I) {
  // ...
  var password = yield I.grabTextFrom('#password');
  I.fillField('password', password);
});

http://codecept.io/acceptance/

于 2016-01-13T00:12:34.610 回答