【发布时间】:2015-02-19 23:47:05
【问题描述】:
关注Configuring multiple capabilities with promises 话题。
用例:我有两个单独的测试要求在 javascript 禁用 和 本地存储禁用 的情况下触发 Firefox。这意味着我需要两个带有 javascript.enabled = false 和 dom.storage.enabled = false 所需功能/首选项的 Firefox 配置文件。
我正在使用在量角器 1.6 中引入的getMultiCapabilities()。到目前为止,我只需要一个自定义的 firefox 配置文件就可以了,这是配置:
getMultiCapabilities: function() {
var deferred = q.defer();
var multiCapabilities = [
{
browserName: "chrome",
specs: [
"*.spec.js"
],
exclude: [
"footer.disabledJavascript.spec.js"
]
}
];
// Wait for a server to be ready or get capabilities asynchronously.
setTimeout(function() {
var firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("javascript.enabled", false);
firefoxProfile.encoded(function (encodedProfile) {
var capabilities = {
"browserName": "firefox",
"firefox_profile": encodedProfile,
"specs": [
"footer.disabledJavascript.spec.js"
]
};
multiCapabilities.push(capabilities);
deferred.resolve(multiCapabilities);
});
}, 1000);
return deferred.promise;
},
问题:现在我需要带有dom.storage.enabled = false 的第二个firefox 配置文件实例,但我不知道在这种情况下我应该如何解决deferred,因为现在有两个@987654328 @ 调用和添加到 multiCapabilities 的两个功能。
问题:如何使用getMultiCapabilities配置多个firefox配置文件?
我让它工作的唯一方法是将一个配置文件嵌套到另一个配置文件中,并在最深层调用resolve()(如果有两个配置文件可能没问题 - 但这个解决方案并不能真正扩展):
var multiCapabilities = [
{
browserName: "chrome",
specs: [
"*.spec.js"
],
exclude: [
"footer.disabledJavascript.spec.js",
"disabledLocalStorage.spec.js"
]
}
];
// Wait for a server to be ready or get capabilities asynchronously.
setTimeout(function() {
// profile with disabled javascript
var firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("javascript.enabled", false);
firefoxProfile.encoded(function (encodedProfile) {
var capabilities = {
browserName: "firefox",
directConnect: true,
firefox_profile: encodedProfile,
specs: [
"footer.disabledJavascript.spec.js"
]
};
multiCapabilities.push(capabilities);
// profile with disabled local storage
var newFirefoxProfile = new FirefoxProfile();
newFirefoxProfile.setPreference("dom.storage.enabled", false);
newFirefoxProfile.encoded(function (newEncodedProfile) {
var newCapabilities = {
browserName: "firefox",
directConnect: true,
firefox_profile: newEncodedProfile,
specs: [
"disabledLocalStorage.spec.js"
]
};
multiCapabilities.push(newCapabilities);
deferred.resolve(multiCapabilities);
});
});
}, 1000);
return deferred.promise;
},
【问题讨论】:
标签: angularjs firefox testing protractor end-to-end