Почему нам нужно устанавливать свойство системы для браузеров Chrome и IE, а не для браузера Firefox

Для Chrome

public class Chrome {

  public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "E://chromedriver.exe");
        WebDriver driver = new ChromeDriver();              
        driver.get("http://www.google.com");

    }

}

для Firefox,

public class Firefox {

      public static void main(String[] args) {

            WebDriver driver = new FirefoxDriver();              
            driver.get("http://www.google.com");

        }

    }

Почему нам нужно указывать system.setProperty для Chrome и IE?


person SacTan    schedule 09.02.2016    source источник


Ответы (3)


У меня был такой же вопрос, но после раскопок я обнаружил,

WebDriver использует собственный подход браузера. Selenium предлагает встроенный драйвер для Firefox, но не для других браузеров. Все драйверы (драйвер Chrome, драйвер IE и т. Д.) Построены на основе специального JS Engine, используемого каждым браузером.

Selenium WebDriver очень хорошо работает с Mozilla Firefox, поскольку он имеет встроенный сервер драйверов. Но то же самое нельзя сказать о Internet Explorer и Google Chrome. Firefox - самый традиционный браузер, поэтому Selenium WebDriver не требует установки каких-либо дополнительных утилит перед запуском браузера. Пакет Selenium автоматически ссылается на расположение по умолчанию для firefox.exe, поэтому пользователю не нужно устанавливать какие-либо другие свойства.

Если вы когда-нибудь получите сообщение «путь к исполняемому файлу драйвера должен быть установлен веб-драйвером. т.е. драйвер системного свойства »или аналогичного ему эквивалента в Chrome, это означает, что вам необходимо установить серверы драйверов в вашем браузере. Сервер драйвера управляет вызовами между браузерами и проводным протоколом Selenium.

InternetExplorerDriver - это автономный сервер, реализующий проводной протокол WebDriver.

Точно так же в Google Chrome нет встроенного сервера, поэтому вам понадобится сервер драйвера Chrome для передачи кода Selenium в браузер. Вы можете скачать сервер драйверов Chrome.

Основано здесь.

person Sanjay Bhimani    schedule 09.02.2016
comment
Спасибо, Санджай .. Это действительно помогает понять концепцию, лежащую в основе этого. - person SacTan; 09.02.2016

Реализация FirefoxDriver, ChromeDriver, InternetExplorerDriver отличается, поэтому отличается и способ создания экземпляра объекта.

Драйвер Firefox управляет браузером Firefox с помощью подключаемого модуля Firefox. Используемый профиль Firefox удален из того, что установлен на компьютере, и включает только Selenium WebDriver.xpi.

InternetExplorerDriver - это автономный сервер, реализующий проводной протокол WebDriver.

ChromeDriver поддерживается самим проектом Chromium. WebDriver работает с Chrome через двоичный файл chromedriver (его можно найти на странице загрузки проекта Chrome). У вас должны быть установлены как chromedriver, так и версия браузера Chrome. chromedriver необходимо разместить где-нибудь на пути к вашей системе, чтобы WebDriver автоматически обнаружил его. Сам браузер Chrome обнаруживается chromedriver в пути установки по умолчанию

Дополнительные сведения см. В документации по селену.

person Amanpreet Kaur    schedule 09.02.2016

Простой ответ: каждый браузер имеет собственную реализацию WebDriver и не поддерживается проектом Selenium. Следовательно, чтобы селен мог взаимодействовать с конкретным драйвером браузера, нам нужно указать полный путь к драйверу.

Почему для firefox нет необходимости указывать путь к драйверу? В Selenium 2.0 все еще присутствует selenium RC и поддерживает firefox. Начиная с Selenium 3.0 и далее нет официальной поддержки драйверов для конкретных браузеров. Следовательно, нам нужно указать путь к драйверу через System.setproperty для всех браузеров.

person Seetaram Hegde    schedule 18.01.2019