需要帮助使 onPrepare 在 Protractor 中使用全局变量
Need help making onPrepare use global variables in Protractor
除只是将初始 junitresults.xml 转储到基本文件夹并忽略将其放入 reportPath 文件夹的代码外,这一切都正常工作。
onComplete 函数在访问要在其 node_module 中使用的全局变量时没有问题。 (不过,我必须人为地在 reportPath 文件夹中放置一个测试 junitresults.xml 文件才能使用它,因为 onPrepare 并未将其放在那里)。
onPrepare 中的函数似乎完全忽略了在同一个onPrepare 中设置的全局变量。我怎样才能让它访问那些?我什至尝试为它创建一个单独的非全局变量来访问它,但它也忽略了它。请帮助!谢谢!
...
multiCapabilities: [
{ browserName: 'firefox' },
{ browserName: 'chrome' }
],
onPrepare: function() {
var capsPromise = browser.getCapabilities();
capsPromise.then(function(caps) {
global.browserName = caps.caps_.browserName.replace(/ /g,"-");
global.browserVersion = caps.caps_.version;
// browserName = global.browserName; // was just testing if not-global would work
global.reportPath = 'c:/QA/test-results/' + global.browserName + '/';
});
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: global.reportPath,
filePrefix: 'junitresults'
}));
return global.browserName, global.browserVersion, global.reportPath;
},
onComplete: function() {
var HTMLReport = require('jasmine-xml2html-converter');
// Call custom report for html output
testConfig = {
reportTitle: 'Test Execution Report',
outputPath: reportPath,
seleniumServer: 'default',
applicationUrl: browser.baseUrl,
testBrowser: global.browserName + ' v.' + global.browserVersion
};
new HTMLReport().from(reportPath + 'junitresults.xml', testConfig);
console.log("... aaaannnnd... done.");
},
尝试将 jasmine 报告器初始化放入 getCapabilities
承诺解析回调中:
onPrepare: function() {
var capsPromise = browser.getCapabilities();
capsPromise.then(function(caps) {
var browserName = caps.caps_.browserName.replace(/ /g,"-");
var browserVersion = caps.caps_.version;
var reportPath = 'c:/QA/test-results/' + browserName + '/';
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: reportPath,
filePrefix: 'junitresults'
}));
});
},
此外,您可以在全局可用的 browser
对象上设置属性,而不是 global
。
除只是将初始 junitresults.xml 转储到基本文件夹并忽略将其放入 reportPath 文件夹的代码外,这一切都正常工作。
onComplete 函数在访问要在其 node_module 中使用的全局变量时没有问题。 (不过,我必须人为地在 reportPath 文件夹中放置一个测试 junitresults.xml 文件才能使用它,因为 onPrepare 并未将其放在那里)。
onPrepare 中的函数似乎完全忽略了在同一个onPrepare 中设置的全局变量。我怎样才能让它访问那些?我什至尝试为它创建一个单独的非全局变量来访问它,但它也忽略了它。请帮助!谢谢!
...
multiCapabilities: [
{ browserName: 'firefox' },
{ browserName: 'chrome' }
],
onPrepare: function() {
var capsPromise = browser.getCapabilities();
capsPromise.then(function(caps) {
global.browserName = caps.caps_.browserName.replace(/ /g,"-");
global.browserVersion = caps.caps_.version;
// browserName = global.browserName; // was just testing if not-global would work
global.reportPath = 'c:/QA/test-results/' + global.browserName + '/';
});
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: global.reportPath,
filePrefix: 'junitresults'
}));
return global.browserName, global.browserVersion, global.reportPath;
},
onComplete: function() {
var HTMLReport = require('jasmine-xml2html-converter');
// Call custom report for html output
testConfig = {
reportTitle: 'Test Execution Report',
outputPath: reportPath,
seleniumServer: 'default',
applicationUrl: browser.baseUrl,
testBrowser: global.browserName + ' v.' + global.browserVersion
};
new HTMLReport().from(reportPath + 'junitresults.xml', testConfig);
console.log("... aaaannnnd... done.");
},
尝试将 jasmine 报告器初始化放入 getCapabilities
承诺解析回调中:
onPrepare: function() {
var capsPromise = browser.getCapabilities();
capsPromise.then(function(caps) {
var browserName = caps.caps_.browserName.replace(/ /g,"-");
var browserVersion = caps.caps_.version;
var reportPath = 'c:/QA/test-results/' + browserName + '/';
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: reportPath,
filePrefix: 'junitresults'
}));
});
},
此外,您可以在全局可用的 browser
对象上设置属性,而不是 global
。