codeceptJS / webdriverIO使用抓取命令

时间:2016-01-10 17:56:06

标签: javascript selenium testing webdriver-io codeceptjs

我是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进行测试。

有人能举例说明如何使用产量并继续测试吗?

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

1 个答案:

答案 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');
});

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/