我想将 Protractor 与 Yeoman 生产的脚手架集成。我遵循了一个教程,其中较旧scenario-runner
的用于设置 e2e 测试(通过grunt
)。
我想升级我的脚手架并改用 Protractor。
有什么想法吗?
我想将 Protractor 与 Yeoman 生产的脚手架集成。我遵循了一个教程,其中较旧scenario-runner
的用于设置 e2e 测试(通过grunt
)。
我想升级我的脚手架并改用 Protractor。
有什么想法吗?
安装protractor
并grunt-protractor-runner
从npm
:
npm install protractor grunt-protractor-runner --save-dev
为量角器()创建一个配置文件,protractor.conf.js
更改您的测试文件和测试服务器:specs
baseUrl
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['test/e2e/*_test.js'],
baseUrl: 'http://localhost:9001' //default test port with Yeoman
}
更新你的Gruntfile.js
,在 karma 任务之后添加以下内容:
protractor: {
options: {
keepAlive: true,
configFile: "protractor.conf.js"
},
run: {}
}
添加被测量角器任务
grunt.registerTask('test', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'karma',
'protractor:run'
]);
下载并启动 selenium 服务器:
node_modules/protractor/bin/webdriver-manager update
node_modules/protractor/bin/webdriver-manager start
(在 Windows 中:)
node node_modules/protractor/bin/webdriver-manager update
node node_modules/protractor/bin/webdriver-manager start
更新你的package.json
,在之后添加以下内容"devDependencies"
。这将在之后运行命令,npm install
因此您无需每次都记住。
"scripts": {
"install": "node node_modules/protractor/bin/webdriver-manager update"
}
使用 grunt 运行测试
grunt test
如果您希望量角器为您启动服务器,请删除
seleniumAddress: 'http://localhost:4444/wd/hub',
from protractor.conf.js
,然后 runninggrunt test
将在测试期间启动一个独立的 selenium 实例,并在运行测试套件后退出它。
要添加到现有答案中的一件事;如果您想自动启动 Selenium 服务器,您还必须指定 seleniumServerJar 和 chromeDriver(如果使用 Chrome)的位置,否则测试将无法工作,直到您手动启动 Selenium 服务器(确保运行“webdriver-管理器更新”首先从命令行):
protractor: {
options: {
keepAlive: false,
configFile: "test/config/protractor.conf.js",
noColor: true, // If true, protractor will not use colors in its output.
args: {
seleniumServerJar: 'node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar',
chromeDriver: 'node_modules/protractor/selenium/chromedriver.exe'
}
},
run: {
}
},
正如@user2172816在他们的回答中提到的那样——seleniumAddress: 'http://localhost:4444/wd/hub'
从你的量角器配置中省略通常会导致量角器为你启动一个 Selenium 实例。
作为替代方案,您可以使用grunt-protractor-webdriver来启动 Selenium:
1) 安装并保存grunt-protractor-webdriver
npm install grunt-protractor-webdriver --save-dev
2)将以下内容添加到您的 Grunt 定义函数中:
grunt.loadNpmTasks('grunt-protractor-webdriver');
3) 添加以下示例 protractor webdriver 任务:
protractor_webdriver: {
start: {
options: {
path: 'node_modules/protractor/bin/',
command: 'webdriver-manager start'
}
}
}
4)在运行量角器之前添加protractor_webdriver
到您的任务,例如test
grunt.registerTask('test', [
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'karma',
'protractor_webdriver',
'protractor:run'
]);