我自己为firefox构建了selenoid docker映像,并在browsers.json
中对其进行了如下配置:
"firefox": {
"default": "66.0",
"versions": {
"beta": {
"image": "my/path/to/firefox:beta",
"port": "4444"
},
"66.0": {
"image": "selenoid/vnc:firefox_66.0",
"port": "4444"
}
}
}
发送version=beta
功能会导致网络驱动程序抛出
selenium.WebDriverException: Requested environment is not available
在我发现的日志中
2019/04/03 08:17:29 [3] [PROXY_TO] [90ab834d22aa3bbe2731eeb550497eec7ef9fb11c1e7f4609d617cf6a25124e7] [http://172.17.0.4:4444]
2019/04/03 08:17:29 [3] [SESSION_ATTEMPTED] [http://172.17.0.4:4444] [1]
2019/04/03 08:17:29 [3] [SESSION_ATTEMPTED] [http://172.17.0.4:4444/wd/hub] [2]
2019/04/03 08:17:29 [3] [SESSION_FAILED] [http://172.17.0.4:4444/wd/hub] [400 Bad Request]
由于完全相同的功能适用于chrome,而且如果我在"default": "beta"
中设置browsers.json
而不设置version
功能也可以使用,我认为这是因为geckodrivers与功能与实际浏览器版本的对应关系。 (假定为here)。
我有几种解决方法,但是不知道如何从技术上实现这些目标:
version
功能传递给硒驱动程序(在本例中为geckodriver)version
功能和浏览器版本browsers.json
而不是browser_version
的{{1}}获取docker镜像version
添加另一个伪造的浏览器,并将beta设置为默认值,然后只需设置browsers.json
功能。这里的问题是,selenoid将检查浏览器名称,并且如果它与browserName
,chrome
或firefox
不匹配,则无法启动selenoid容器。例如: opera
browserName=firefox-beta
任何帮助或其他信息将不胜感激
答案 0 :(得分:0)
对于兼容w3c的浏览器(到目前为止,只有非Chrome浏览器),它们要求浏览器版本必须具有browserVersion
功能,而不是version
。我看到您尝试过browser_version
,但是您尝试过browserVersion
吗?