selenium-webdriver 在打开浏览器后不会执行下一步
selenium-webdriver won't execute next step after opening browser
我一直在尝试使用 cucumber-js
和 selenium-webdriver
来自动化我们的 Web 测试。我写了一个简单的网络导航示例,但我总是得到空白页面并且 运行ner 停止做任何事情。这是代码片段:
// 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 上,我得到的总是空白页。
有人遇到同样的问题吗?知道如何解决或至少调试这个问题吗?
P.S。我在 64 位 ubuntu 14.04
上使用 Chrome 65
、chromedriver 2.40.565383
、Firefox 56
和 geckodriver 0.21.0
运行ning
可以看出非常example of cucumber-js,你需要:
- 一个功能文件 <- 您没有这个文件或没有正确设置
- 步骤定义 <- 您没有这个或者没有正确设置
- 使用步骤定义的代码 <- 你有这个
在您修复此问题之前,此代码确实不会执行:
Given("I'm on landing page", function() {
browser.get('https://www.google.com')
browser.quit()
});
其实我刚刚想通了,
我需要在函数参数里面加上"callback",像这样:
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()
});
您需要的是:
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();
});
return 和回调将向函数(以及 cucumber)表明该步骤已完成执行。
在某些情况下,您可能希望等待内部的所有内容按顺序执行,这就是 async
和 await
的用武之地(在 Node 10.3.0+ 上很容易获得):
Given("I'm on landing page", async function() {
return await browser.get('https://www.google.com');
});
我一直在尝试使用 cucumber-js
和 selenium-webdriver
来自动化我们的 Web 测试。我写了一个简单的网络导航示例,但我总是得到空白页面并且 运行ner 停止做任何事情。这是代码片段:
// 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 上,我得到的总是空白页。
有人遇到同样的问题吗?知道如何解决或至少调试这个问题吗?
P.S。我在 64 位 ubuntu 14.04
上使用Chrome 65
、chromedriver 2.40.565383
、Firefox 56
和 geckodriver 0.21.0
运行ning
可以看出非常example of cucumber-js,你需要:
- 一个功能文件 <- 您没有这个文件或没有正确设置
- 步骤定义 <- 您没有这个或者没有正确设置
- 使用步骤定义的代码 <- 你有这个
在您修复此问题之前,此代码确实不会执行:
Given("I'm on landing page", function() {
browser.get('https://www.google.com')
browser.quit()
});
其实我刚刚想通了,
我需要在函数参数里面加上"callback",像这样:
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()
});
您需要的是:
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();
});
return 和回调将向函数(以及 cucumber)表明该步骤已完成执行。
在某些情况下,您可能希望等待内部的所有内容按顺序执行,这就是 async
和 await
的用武之地(在 Node 10.3.0+ 上很容易获得):
Given("I'm on landing page", async function() {
return await browser.get('https://www.google.com');
});