Использовать пользовательскую версию браузера Firefox для geckodriver - PullRequest
0 голосов
/ 03 апреля 2019

Я создаю образы селеноидных докеров для 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"
      }
    }
  }

Любая помощь или дополнительная информация будет принята с благодарностью

1 Ответ

0 голосов
/ 03 апреля 2019

Для браузеров, совместимых с w3c (на сегодняшний день только для не Chrome), они требуют, чтобы версия браузера поддерживала browserVersion вместо version.Я вижу, вы пробовали browser_version, но вы пробовали browserVersion?

https://www.w3.org/TR/webdriver1/#capabilities

...