我正在尝试使用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上),它可以工作。
答案 0 :(得分:0)
好的,我找到了解决这个问题的方法。
似乎只有在虚拟机与远程计算机位于同一台计算机上时才会出现此问题。在独立于远程计算机启动虚拟机之后,它可以正常工作。