До выпуска Firefox 47.x унаследованный драйвер был реализован как расширение Firefox. Это расширение было установлено в профиле, используемом драйвером всякий раз, когда WebDriver запускал Firefox.
Следовательно, мы использовали:
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
Firefox 48 отключил расширение браузера и представил WebDriver. С тех пор GeckoDriver
решение на основе Marionette, разрабатываемое и поддерживаемое Mozilla, предназначено для автоматизации браузера Mozilla Firefox.
Марионетка
Согласно официальной документации Mozilla на странице developer.mozilla.org. Марионетка - это драйвер автоматизации. Он использует удаленный протокол Firefox, который может управлять пользовательским интерфейсом. Марионетка принимает запросы и выполняет их в Gecko. У него тоже есть клиент. Клиент отправляет инструкции серверу, а сервер выполняет инструкции в браузере.
Поэтому мы начали использовать Marionette:
System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
Провода
Есть несколько ссылок на то, чтобы переименовать исполняемый файл в «wire.exe» и добавить его в свой путь. Следовательно, было использовано следующее:
System.setProperty("webdriver.firefox.marionette","C:\\wires.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
GeckoDriver
GeckoDriver - это исполняемый файл, который нам нужно загрузить в нашу систему и указать его местоположение в наших скриптах / программах при выполнении наших тестовых сценариев. GeckoDriver, в свою очередь, запустит браузер Mozilla Firefox.
Эти отрывки взяты из эпического ответа Джима Эвана на вопрос Каковы преимущества использования Marionette FirefoxDriver вместо старого Selenium FirefoxDriver для тестера Selenium? a > который дает нам подробное представление о том, как GeckoDriver и Marionette появились на практике.
Поэтому мы начали использовать geckodriver.exe:
System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
Теперь в текущем сценарии у вас все еще есть возможность выполнить автоматизацию через устаревший браузер Firefox 47.x, а также недавние выпуски браузера Firefox 53.x.
Вариант использования 1:
В случае использования устаревших браузеров Firefox 47.x вы должны явно установить для "marionette" значение false через класс DesiredCapabilities следующим образом:
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setCapability("firefox_binary", "C:\\Program Files\\Mozilla Firefox47\\firefox.exe");
dc.setCapability("marionette", false);
WebDriver driver = new FirefoxDriver(dc);
driver.navigate().to("https://gmail.com");
Вариант использования 2:
В случае использования устаревших браузеров Firefox 47.x, если вы пропустите установку "marionette" на false или если вы установите для "marionette" значение true, вы увидите IllegalStateException
Вариант использования 3:
В случае использования браузеров Firefox 53.x вы можете пропустить установку «марионетки» в значение true, как показано ниже, чтобы отобразить журналы информации о марионетках, например. Marionette INFO Listening on port 11105
:
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
Вариант использования 4:
В случае использования браузеров Firefox 53.x вы можете явно установить для "marionette" значение true с помощью класса DesiredCapabilities, который также будет отображать журналы Marionette WARN, например, WARN TLS certificate errors will be ignored for this session
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setCapability("marionette", true);
WebDriver driver = new FirefoxDriver(dc);
driver.navigate().to("https://gmail.com");
Вариант использования 5:
В случае использования браузеров Firefox 53.x, если вы принудительно установите для «марионетки» значение false через класс DesiredCapabilities, вы увидите UnreachableBrowserException
.
person
DebanjanB
schedule
11.05.2017