Я создаю образы селеноидных докеров для Firefox и настраиваю их в 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
, я предполагаю, что это происходит потому, что геккодриверы сравнивают версию из capabilites с актуальная версия браузера. (как предполагается здесь ).
У меня есть несколько идей, как это обойти, но я не знаю, как технически реализовать их:
- Запретить Selenoid передавать возможность
version
драйверу селена (в данном случае, geckodriver)
- Запретить гекодрайверу проверку
version
возможностей и версии браузера
- Добавьте еще один флаг в selenoid, чтобы получить изображение докера из
browsers.json
, например browser_version
вместо version
- Добавьте еще один поддельный браузер в
browsers.json
и установите бета-версию по умолчанию, а затем просто установите возможность browserName
. Проблема здесь в том, что селеноид проверяет имена браузеров, и если он не соответствует chrome
, firefox
или opera
, контейнер селеноидов не может быть запущен. E.g.:
browserName=firefox-beta
"firefox-beta": {
"default": "beta",
"versions": {
"beta": {
"image": "my/path/to/firefox:beta",
"port": "4444"
}
}
}
Любая помощь или дополнительная информация будет принята с благодарностью