【发布时间】:2019-04-04 04:15:15
【问题描述】:
我自己为 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,如果我在 browsers.json 中设置 "default": "beta" 并且不设置 version 功能,它也可以工作,我认为发生这种情况是因为 geckodrivers 将功能中的版本与实际浏览器版本。 (假定为here)。
我有几个想法如何解决这个问题,但不知道如何在技术上实现这些:
- 防止 Selenoid 将
version功能传递给 selenium 驱动程序(本例中为 geckodriver) - 防止 geckodriver 检查
version功能和浏览器版本 - 向 selenoid 添加另一个标志以从
browsers.json获取 docker 映像,例如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"
}
}
}
任何帮助或进一步的信息将不胜感激
【问题讨论】:
-
Selenoid 也支持
browserVersion功能。 -
@vania-pooh 设置
browserVersion=beta仍然会导致 geckodriver 抛出异常。我认为您不能将其他值设置为浏览器实际版本之外的版本,这似乎不适用于 beta 版本。
标签: selenium geckodriver selenoid