2017-02-07 1 views
1

Чтобы выполнить тестовые скрипты на разных браузерах, мы загружаем конкретный драйвер браузера с seleniumhq.com и запускаем скрипты.Почему нам нужно загружать драйверы браузера (IE, Chrome)

Этот код прекрасно работает как надо:

System.setProperty("webdriver.ie.driver", "C:\\Users\\Public\\CIO\\resources\\iedriver.exe"); 

WebDriver driver = new InternetExplorerDriver(); 
driver.get("www.mywebsite.com"); 

Когда я уже IE Исполняемые -'iexplore.exe»на моей машине, не может Селен WebDriver использовать, что для запуска IE?

Почему мы конкретно скачаем IEDriver с seleniumhq.com здесь?

C:\Program Files\Internet Explorer\iexplore.exe 

Я попытался даже настроить это и запустить программу. Браузер получил запущен с адресом, как --port=1234/ однако он не может перейти на соответствующий веб-сайт и в конце концов бросил исключение:

Исключение в нити «основной» org.openqa.selenium.remote.UnreachableBrowserException: Не удалось начать новый сеанс. Возможными причинами являются неверный адрес удаленного сервера или Ошибка запуска браузера. Сложение информация: версия: '2.28.0', редакция: '18309', время: '2012-12-11 20:21:18'

ответ

5

В "Браузер Drivers" являются серверы, реализующие WebDriver-х wire protocol , и знать, как преобразовать эти команды в собственный API-интерфейс конкретного браузера.

WebDriver site объясняет:

селен WebDriver делает прямые звонков в браузер, используя встроенную поддержку каждого браузера для автоматизации. Как эти прямые звонки составляют , а функции, которые они поддерживают, зависят от браузера, который вы используете .

Например, ChromeDriver wiki описывает его следующим образом:

ChromeDriver состоит из трех отдельных частей. Существует сам браузер («хром»), языковые привязки, предоставляемые проектом Selenium («драйвер»), и исполняемый файл, загруженный из проекта Chronium , который выступает в качестве моста между «хром» и « » ».

По сути, браузер не знает, как «говорить» WebDriver Wire Protocol, а WebDriver не знает, как «говорить» API браузера. Фактически, каждый браузер имеет свой собственный API. «Драйвер браузера» знает, как интерпретировать проводной протокол и вызывать API этого браузера.

+1

Хорошее объяснение. Можно также сослаться на эту ссылку https://www.quora.com/How-does-the-Selenium-WebDriver-work – shank087

+0

@SkinnyJ, поддержанный для объяснения, но один быстрый вопрос, если должен быть средний уровень для webdriver-браузера сообщение тогда почему то же самое не относится к firefox? – SelThroughJava

+0

@SelThroughJava - пакет selenium поставляется с webdriver.xpi, который управляет браузером firefox. Он должен находиться в папке org-> openqa-> selenium-> firefox. Для firefox 48 и выше, пожалуйста, обратитесь к следующей ссылке http: // stackoverflow.ком/вопросы/38916650/что-это-то выгоды-оф-использования-марионетка-firefoxdriver-вместо-оф-олд-Селен/38917100 # 38917100 – shank087