编程语言
首页 > 编程语言> > javascript – Webdriverio黄瓜不能使用承诺

javascript – Webdriverio黄瓜不能使用承诺

作者:互联网

我试图用webdriverIO学习更多的瓜子,我在启动测试时遇到了一些麻烦.

实际上,我想介绍这个简单的功能:

Feature: Example Feature
  In order to become productive
  As a test automation engineer
  I want to understand the basics of cucumber

  Scenario: My First Test Scenario
    Given I have open "https://google.com"
    Then the title should be "Google".
    And the bar should be empty.

通过这个测试:

const assert = require('assert');
module.exports = function() {
    this.Given(/^I have open "([^"]*)"$/, function(arg1, callback) {
      browser
        .url(arg1)
        .call(callback);
    });

    this.Then(/^the title should be "([^"]*)"\.$/, function(arg1, callback) {
      // First solution
      const title = browser.getTitle();
      assert(title, arg1);

      // Second solution
      browser
        .getTitle()
        .then(title2 => {
          assert(title2, arg1);
          callback();
        });
    });

    this.Then(/^the bar should be empty\.$/, function(callback) {
        // Write code here that turns the phrase above into concrete actions
        callback(null, 'pending');
    });
}

我的配置文件:

"use strict";

const WebDriverIO = require('webdriverio');
const browser = WebDriverIO.remote({
  baseUrl: 'https://google.com', // Or other url, e.g. localhost:3000
  host: 'localhost', // Or any other IP for Selenium Standalone
  port: 4444,
  waitforTimeout: 120 * 1000,
  logLevel: 'silent',
  screenshotPath: `${__dirname}/documentation/screenshots/`,
  desiredCapabilities: {
    browserName: process.env.SELENIUM_BROWSER || 'chrome',
  },
});

global.browser = browser;

module.exports = function() {
  this.registerHandler('BeforeFeatures', function(event, done) {
    browser.init().call(done);
  });

  this.registerHandler('AfterFeatures', function(event, done) {
    browser.end().call(done);
  });
};

我的问题

我的问题是:

>我从未传入.call(回调)函数
>如果我通过在.url(arg1)之后添加callback()来绕过前一点,我会转到下一个点
>在第一个然后,第一个解决方案和第二个解决方案似乎都不起作用.当我试图记录const标题值时,我有一个未决的承诺.但是,当我试图解决这个承诺(第二种情况)时,我从不记录任何事情(即使在拒绝的情况下).

约束

>我不想使用wdio
>我使用的是硒2.53
>我使用的是cucumberjs 1.3.1
>我使用的是webdriverio 4.4.0
>我使用的是Nodejs v4.6.0

编辑:我总是有超时问题

解决方法:

使用chimpjs.它集成了webdriverio,黄瓜和其他朋友.它是“在光纤上”,因此您可以以同步方式编写测试.我使用它,当我必须使用我可以或需要的承诺时.

标签:javascript,node-js,webdriver-io,gherkin,cucumberjs
来源: https://codeday.me/bug/20190710/1429157.html