打开浏览器后,selenium-webdriver将不会执行下一步

时间:2018-06-20 08:53:56

标签: javascript selenium testing automated-tests cucumberjs

我一直在尝试通过使用cucumber-jsselenium-webdriver来自动化我们的网络测试。我写了一个简单的Web导航示例,但是我总是空白页,跑步者停止做任何事情。这是代码段:

// my_project/features/step_definitions/SomeTest.js

const { Given, When, Then } = require('cucumber')
const { assert, expect } = require('chai')
const webdriver = require('selenium-webdriver')

var browser = new webdriver.Builder()
.forBrowser('chrome')
.build();

Given("I'm on landing page", function() {
    browser.get('https://www.google.com')
});

这是我的SomeTest.feature:

// my_project/features/SomeTest.feature

    Feature: Some Test

    As a user I want to search a keyword on Google

    @first
    Scenario: Search a word
    Given I'm on landing page
    When I typed in "test"
    Then I should get redirected search result page

使用./node_modules/.bin/cucumber-js运行测试后 我得到的始终是Chrome或Firefox上的空白页。

This is what I got after running the test

有人遇到相同的问题吗?知道如何解决或至少调试吗?

P.S。我正在使用在64位ubuntu 14.04上运行的Chrome 65chromedriver 2.40.565383Firefox 56geckodriver 0.21.0

3 个答案:

答案 0 :(得分:1)

example of cucumber-js所示,您需要:

  • 功能文件<-您没有此文件或设置不正确
  • 步骤定义<-您没有此步骤或设置不正确
  • 使用步骤定义的代码<-您拥有的

在您解决此问题之前,该代码实际上不会执行:

Given("I'm on landing page", function() {
    browser.get('https://www.google.com')
    browser.quit()
});

答案 1 :(得分:1)

您需要的是:

Given("I'm on landing page", function() {
    return browser.get('https://www.google.com')
});

Given("I'm on landing page", function(callback) {
    browser.get('https://www.google.com');
    callback();
});

返回和回调将表示该函数已完成执行的功能(因此也代表黄瓜)。

在某些情况下,您可能要等待内部所有内容按顺序执行,这就是asyncawait进入其中的位置(在节点10.3.0+上可用):

Given("I'm on landing page", async function() {
    return await browser.get('https://www.google.com');
});

答案 2 :(得分:-2)

实际上我只是想通了,

我需要在函数参数中添加“回调”,如下所示:

Given("I'm on landing page", function() {
    browser.get('https://www.google.com')
    browser.quit()
});

为此,

Given("I'm on landing page", function(callback) {
    browser.get('https://www.google.com')
    browser.quit()
});