我目前正在使用Chrome(驱动程序)进行测试。我想用Firefox和Safari测试它。一个接一个,它不能并行。
这是我开始测试的一项任务:
gulp.task('test', function() {
return gulp.src('*test/features/*').pipe(cucumber({
'steps': '*test/features/steps/*.js'
}));
});
一个简单的功能文件:
Feature: UI
Testing UI
Scenario: Check the title of the page
When I open the homepage
Then I should see "Test - IntApp" in the title
步骤文件:
const chrome = require('selenium-webdriver/chrome');
const webdriver = require('selenium-webdriver');
const assert = require('assert');
module.exports = function () {
let options = new chrome.Options();
options.addArguments('start-maximized');
var driver = new webdriver.Builder()
.forBrowser('chrome')
.setChromeOptions(options)
.build();
this.When('I open the homepage', function (done) {
driver.get('http://intapp.dev/').then(done);
});
this.Then('I should see "Test - IntApp" in the title', function (done) {
driver.getTitle().then(function(title) {
assert.equal(title, "Test - IntApp");
}).then(done);
});
this.registerHandler('AfterFeatures', function (features) {
return driver.quit();
});
};
我在想,也许我可以从gulp任务中以某种方式将浏览器的名称作为参数传递,但似乎不可能。
答案 0 :(得分:1)
编写bash或批处理脚本并创建安装文件。
在设置文件中,您可以设置一个可以使用脚本更改的变量(通过编辑行),然后将其交给您声明将使用哪个驱动程序的位置。
此脚本将一个接一个地运行它们,但它们将是不同的套件(如果使用JSON或HTML输出,则创建不同的报告)。
这就是我现在一直在进行跨浏览器自动化的方式。
首选是使用bash over batch,因为bash可以在Mac,UNIX和Windows 10上运行,但批处理主要是Windows(从内存我认为它只是Windows)。
如果你需要有关从何处入手的指导,我可以根据要求给你一个大纲,但我应该给你足够的信息来研究如何去做。
答案 1 :(得分:1)
由于我想按顺序进行测试,这就是我想出的:
gulp.task('test', function(cb) {
runSequence(
'test-chrome',
'test-firefox',
cb);
});
gulp.task('test-chrome', function(cb) {
return gulp.src('*test/features/*').pipe(cucumber({
'steps': '*test/features/steps/*.js',
'support': '*test/support/chrome.js'
}));
});
gulp.task('test-firefox', function(cb) {
return gulp.src('*test/features/*').pipe(cucumber({
'steps': '*test/features/steps/*.js',
'support': '*test/support/firefox.js'
}));
});
答案 2 :(得分:0)
我在想,也许我可以将浏览器的名称作为参数传递 不知怎的,从gulp任务开始,但它似乎不可能。
请记住,每个浏览器都有自己的驱动程序,每个驱动程序都需要以自己的方式创建/初始化。
如果你按照你计划的方向前进, 您可以将所有浏览器句柄(在您创建它们之后)保留在一个数组中,然后只需按其名称拉出所需的浏览器句柄。