Использование Selenium 3.0 с Firefox V‹47

Selenium3 поддерживает исполняемый файл geckodriver для запуска Mozilla Firefox точно так же, как и другие драйверы; но исполняемый файл geckodriver несовместим с Mozilla Firefox < v47.

Итак, как мы можем добиться обратной совместимости с браузерами V<47, то есть как мы можем использовать firefox браузеры V<47 с Selenium3.


person Jimmy    schedule 22.02.2017    source источник


Ответы (2)


Отключите возможности geckodriver, чтобы можно было использовать FirefoxDriver.

System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");
DesiredCapabilities d = new DesiredCapabilities();
d.setCapability("marionette", false);  // to disable marionette, by default true
WebDriver driver = new FirefoxDriver(d);

Небольшая предыстория поддержки версии geckodriver.exe и Firefox:

Со страницы geckodriver github:

Firefox 47 is explicitly not supported

Итак, если вы хотите использовать версию <= Firefox 47, используйте Firefox driver, а не geckodriver.

  1. В случае selenium 2.53 вам не нужно делать никаких дополнительных действий (не нужно настраивать geckodriver, так как selenium 2.53 использует Firefox driver от default).
  2. В Selenium 3.0 мы должны установить путь geckodriver (поскольку geckodriver — это драйвер default для Firefox в Selenium 3.0), используя System.setProperty, и установить marionette в false, поэтому возможности geckodriver будут отключены, а будет использоваться драйвер Firefox по умолчанию.

Использованная литература:

  1. https://github.com/mozilla/geckodriver#supported-firefoxen
  2. https://github.com/mozilla/geckodriver/issues/224
  3. https://stackoverflow.com/a/40658421/2575259
person Naveen Kumar R B    schedule 22.02.2017
comment
есть ли у нас какая-то гибкость в коде, например, тот же код для ff v›47 и ff ‹47 или добавление некоторого условия для создания общего кода??? - person Jimmy; 22.02.2017
comment
Вы можете использовать метод «getVersion». Поэтому добавьте блок if else для достижения своей задачи. Подробнее здесь stackoverflow.com/questions/12556163 / - person Naveen Kumar R B; 22.02.2017
comment
Я пытаюсь перейти на Selenium 3.X, но основным препятствием был geckodriver. Теперь я знаю, как с этим бороться. Ваше решение спасет мой день. Спасибо - person cezarypiatek; 10.10.2017

Вы должны использовать старый FirefoxDriver, просто убедитесь, что для марионетки установлено значение false, если вы используете RemoteDriver, потому что я не уверен, что он включен по умолчанию (caps.setCapability(FirefoxDriver.MARIONETTE, false);)

Этому драйверу не нужен файл .exe, только import org.openqa.selenium.firefox.FirefoxDriver; в вашем коде, чтобы вы могли его использовать.

driver = new FirefoxDriver();

или если вы используете сетку:

driver = RemoteWebDriver(url, DesiredCapabilities.firefox());
person acikojevic    schedule 22.02.2017