我自己为 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
功能会导致 webdriver 抛出
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 将功能中的版本与实际浏览器版本相匹配。(这里假设)。
我有几个想法如何解决这个问题,但不知道如何在技术上实现这些:
- 防止 Selenoid 将
version
功能传递给 selenium 驱动程序(本例中为 geckodriver) - 防止 geckodriver 检查
version
功能和浏览器版本 - 向 selenoid 添加另一个标志以从中获取 docker 图像,
browsers.json
而browser_version
不是version
- 添加另一个假浏览器
browsers.json
并将测试版设置为默认值,然后只需设置browserName
功能。这里的问题是,selenoid 检查浏览器名称,如果不匹配chrome
,firefox
或者opera
selenoid 容器无法启动。例如:
browserName=firefox-beta
"firefox-beta": {
"default": "beta",
"versions": {
"beta": {
"image": "my/path/to/firefox:beta",
"port": "4444"
}
}
}
任何帮助或进一步的信息将不胜感激