我想将Protractor与Yeoman生产的脚手架相结合。我按照教程进行操作,其中较旧的scenario-runner
用于设置e2e测试(通过grunt
)。
我想升级我的脚手架并改用Protractor 有什么想法吗?
答案 0 :(得分:85)
从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
,在业力任务后添加以下内容:
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',
来自protractor.conf.js
,然后运行grunt test
将在测试期间启动一个独立的selenium实例,并在运行测试套件后退出。
答案 1 :(得分:10)
添加到现有答案的一件事;如果你想自动启动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: {
}
},
答案 2 :(得分:5)
正如@user2172816在他们的回答中提到的 - 从量角器配置中省略seleniumAddress: 'http://localhost:4444/wd/hub'
通常会导致Protractor为您启动Selenium实例。
作为替代方案,您可以使用grunt-protractor-webdriver启动Selenium:
1)安装并保存 grunt-protractor-webdriver
npm install grunt-protractor-webdriver --save-dev
2)将以下内容添加到您的Grunt定义函数中:
grunt.loadNpmTasks('grunt-protractor-webdriver');
3)添加以下示例量角器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'
]);