我正在尝试针对Chrome和Firefox运行多浏览器测试。我想一次只运行一个浏览器。因此,我想例如对命令行参数--browser chrome
进行测试,并使其仅运行chrome浏览器。
我读过某个地方可以做params: {}
我的protractor.config.js的一部分。
因此,我添加了以下内容:
params: {
browser: multiCapabilities.browserName,
},
我得到的错误如下:
ReferenceError: multiCapabilities is not defined
at Object.<anonymous> (/Users/csalisbury/src/helios/protractor.config.js:91:18)
at Module._compile (internal/modules/cjs/loader.js:678:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:689:10)
at Module.load (internal/modules/cjs/loader.js:589:32)
at tryModuleLoad (internal/modules/cjs/loader.js:528:12)
at Function.Module._load (internal/modules/cjs/loader.js:520:3)
at Module.require (internal/modules/cjs/loader.js:626:17)
at require (internal/modules/cjs/helpers.js:20:18)
at ConfigParser.addFileConfig (/Users/csalisbury/src/helios/node_modules/protractor/built/configParser.js:135:26)
at Object.initFn [as init] (/Users/csalisbury/src/helios/node_modules/protractor/built/launcher.js:93:22)
multiCapabilities
定义了一个部分。我也尝试过这样做,capabilities
并得到了相同的消息。
我在这里做错了什么?
这是我的 protractor.config.js
exports.config = {
suites: {
<test suites go here>
},
baseUrl: baseUrl,
directConnect: false,
allScriptsTimeout: 25 * 1000,
jasmineNodeOpts: {
defaultTimeoutInterval: 90 * 1000
},
getPageTimeout: 120 * 1000,
capabilities: {
browserName: 'chrome',
seleniumAddress: seleniumServer,
platform: 'ANY',
version: 'ANY',
chromeOptions: {
args: ['--no-sandbox', '--test-type=browser', '--lang=en', '--window-size=1680,1050'],
prefs: {
'credentials_enable_service': false,
'profile': {
'password_manager_enabled': false
},
download: {
prompt_for_download: false,
directory_upgrade: true,
default_directory: 'C:\\downloads\\'
},
},
},
loggingPrefs: { browser: 'SEVERE' }
},
capabilities: {
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['--safe-mode'],
binary: '/Applications/Firefox.app/Contents/MacOS/firefox'
},
seleniumAddress: seleniumServer,
},
framework: 'jasmine2',
onPrepare: function() {
//Set Up a JUnit XML Reporter - Makes a nice test results area and trend graph in Jenkins
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: 'report',
filePrefix: 'xmloutput'
}));
//Setup screenshots
jasmine.getEnv().addReporter(reporter);
browser.get(browser.baseUrl);
},
// Setup the report before any tests start
beforeLaunch: function() {
return new Promise(function(resolve) {
reporter.beforeLaunch(resolve);
});
},
// Close the report after all tests finish
afterLaunch: function(exitCode) {
return new Promise(function(resolve) {
reporter.afterLaunch(resolve.bind(this, exitCode));
});
},
};
browserName
是使用capabilities
-命令行和配置中设置的。因此,使用命令行进行设置仅是:
protractor conf.js --capabilities.browserName='firefox'
从命令行传递的值将覆盖配置中设置的值,因此例如您可以将chrome保留为默认浏览器:
exports.config = {
capabilities: {
browserName: 'chrome'
}
}
然后要覆盖chrome并运行firefox,您只需browserName
按照上图所示进行操作即可。
或者,如果您想避免使用命令行选项,而只是按顺序运行每个浏览器,则可以使用multiCapabilities
并限制maxSessions
允许的数量。
multiCapabilities: [
{ browserName: 'chrome' },
{ browserName: 'firefox' },
],
maxSessions: 1,
来源:量角器配置
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句