我正在尝试使用 Selenium Grid 在远程机器上启动自动化测试。远程机器有一个具有 IE7 的虚拟机。
在远程机器上,我使用以下命令运行集线器:
java -jar selenium-server-standalone-2.32.0.jar -role hub -port 4444"
在虚拟机上,我使用以下命令运行节点:
java -jar selenium-server-standalone-2.32.0.jar -role node -port 5555 -hub http://xxxx:4444/grid/register -browser browserName="internet explorer",version=7,platform=WINDOWS
xxxx 是远程机器的 URL。
我有“所有区域的保护模式设置都不相同”。错误。我尝试更改保护模式设置。在我的本地(我从中运行测试)和远程机器上,默认情况下它被禁用,所以我在虚拟机上禁用了它。我仍然有同样的错误。
虚拟机上的注册工作,检查 xxxx/grid/console 显示浏览器。
有人知道我在这里缺少什么吗?
编辑:完整的错误信息:
internet explorer 7 (ANY): The environment you requested was unavailable. (%s)
> Requested browser: { name: 'undefined - internet explorer 7 (ANY)',
browserName: 'internet explorer',
platform: 'ANY',
version: '7',
build: undefined,
tags: [ 'custom', '47589137' ] }
错误:{ [错误:您请求的环境不可用。]
data: '{"sessionId":"","status":13,"value":{"message":"Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones. (WARNING: The server did not provide any stacktrace information)...
我没有提供提供的完整数据,因为它相当长。如果有任何我应该寻找的具体信息,请告诉我。
EDIT2:调用代码:
它使用石蜡(https://github.com/vmeurisse/paraffin)。对 parafin 函数的调用是:
paraffin.tests(getConfig(['server', 'coverage', 'remote']), function() {
showReportLocation();
callback.apply(this, arguments);
});
配置为:
server: {
path: dir.base,
port: 8080,
coverageDir: dir.coverageDir
},
coverage: {
baseDir: dir.base,
src: dir.src,
coverageDir: dir.coverageDir,
copyall: true,
filter: function(file) {
return list_of_files;
}
},
remote: {
webdriverURL: 'domain',
webdriverPort: 4444,
url: 'http://' + os.hostname() + ':8080/rest_of_the_url',
browsers: [
{browserName: 'internet explorer', version: '7', platform: 'ANY'},
{browserName: 'firefox', platform: 'ANY'},
{browserName: 'chrome', platform: 'ANY'}
]
}
但是,我不认为这是问题所在。使用完全相同的代码和完全相同的命令将节点链接到集线器,但是从我的(物理)机器(尽管在 IE8 上)启动的命令,它可以工作。