Как запускать Internet Explorer

Эта статья первоначально была написана как один из выпусков рассылки “Selenium 2.0: сотня полезных советов”, но видя количество однотипных вопросов, которые после выхода версии Selenium 2.22 задаются в разных местах, мы решили опубликовать этот выпуск в виде статьи.

Версия Selenium 2.22 ознаменовалась появлением новой схемы запуска браузера Internet Explorer – с помощью внешнего исполняемого файла. Эта новая схема полностью аналогична той, которая уже давно использовалась для запуска браузера Google Chrome.

Итак, отныне для того, чтобы запустить Internet Explorer, нужно дополнительно к основному дистрибутиву Selenium загрузить исполняемый файл IEDriverServer.exe. Он существует в двух вариантах – 32-битный и 64-битный, выбирайте тот, который соответствует битности браузера, в котором вы собираетесь запускать тесты.

Загружаете на свою машину нужный архив, распаковываете его – внутри находится единственный файл IEDriverServer.exe.

Если вы разрабатываете тесты на .Net – этот файл нужно положить в директорию, в которой находится Selenium assembly.

Если вы разрабатываете тесты на Java, Python или Ruby – этот файл нужно положить в один из каталогов, содержащихся в переменной окружения PATH, чтобы операционная система смогла найти и запустить его.

Теперь всё готово, и можно запускать драйвер. Как? Да точно так же, как раньше!

driver = new InternetExplorerDriver()

Но в отличие от всех предыдущих версий, при этом Selenium найдет и запустит файл IEDriverServer.exe, который, в свою очередь, запустит браузер.

А теперь небольшой FAQ:

1. Зачем это вообще надо, почему появился новый способ запуска?

Раньше запуск осуществлялся без использования вспомогательного исполняемого файла, с помощью библиотеки IEDriver.dll. В ряде случаев это приводило к серьёзным проблемам. В частности, если по какой-то причине случался критический сбой при работе браузера или при работе кода в библиотеке IEDriver.dll – всё падало, вместе со всеми вашими тестами, продолжение тестирования было невозможно. Но самое печальное то, что при таком аварийном завершении зачастую терялись все результаты тестирования. При новом способе запуска упадет только браузер, тесты продолжат работать, так что даже если согласно настройкам при падении браузера тестирование завершается – вы не потеряете информацию о результатах выполнения тестов. Более того, несмотря на сбой в работе браузера, вы можете переинициализировать драйвер и продолжить тестирование.

Если у вас такое случается – я настоятельно рекомендую не откладывая перейти на новый способ запуска, это добавит стабильности вашим тестам.

Кроме того, появилась возможность запускать несколько независимых экземпляров браузера Internet Explorer на одной машине, что тоже может оказаться кому-то полезно.

2. Что если вы забыли скачать файл IEDriverServer.exe или Selenium не может его найти?

Если вы разрабатываете тесты на .Net – браузер не запустится, будет выведено сообщение об ошибке.

Если вы разрабатываете тесты на Java, Python или Ruby – браузер запустится “старым способом”, путем загрузки dll-библиотеки IEDriver.dll.

3. Куда надо положить файл IEDriverServer.exe при удаленном запуске тестов?

На ту машину, где запускается Selenium Server, в один из каталогов, содержащихся в переменной окружения PATH, чтобы операционная система смогла найти и запустить его.

4. Что если положить файл в PATH не получается или вы хотите дать ему нестандартное имя?

При запуске тестов на Java путь к этому файлу можно указать с помощью системной переменной -Dwebdriver.ie.driver=<путь к файлу>. Если вы запускаете тесты удаленно, значит, нужно указывать эту переменную при запуске Selenium Server.

При запуске тестов на .Net пока нет возможности указывать путь к файлу, его обязательно нужно положить в директорию, в которой находится Selenium assembly, и дать ему стандартное имя.

5. Нужно ли запускать исполняемый файл IEDriverServer.exe?

Нет, не нужно, Selenium сам его запустит и сам остановит при вызове метода driver.quit()