Статьи

Использование CFSelenium с наиболее распространенными браузерами

При использовании CFSelenium для отправки команд Selenium серверу Selenium вы начинаете с создания экземпляра CFSelenium как объекта. Если вы используете версию ColdFusion 9, вы можете создать ее с помощью следующего предложения:

browserUrl= "http://www.cnn.com";
selenium = new CFSelenium.selenium(browserUrl);

Если вы используете версию ColdFusion 7 или 8, вы можете создать ее так:

<cfset var browserUrl= "http://www.cnn.com" />
<cfset variables.selenium= CreateObject("component","CFSelenium.selenium_tags").init(browserUrl) />

В обоих случаях вы вызываете функцию init () соответствующего файла CFSelenium .cfc. Функция init () может принимать 4 аргумента:

  • browserURL : (требуется) URL-адрес веб-сайта (только адрес веб-корня, а не вложенных папок), для которого вы хотите выполнить команды Selenium.

  • host : (необязательно) IP-адрес или имя хоста компьютера, на котором работает экземпляр Selenium Server, с которым CFSelenium будет связываться. Значением по умолчанию является «localhost»

  • порт : (необязательно) номер порта, используемый для связи с экземпляром Selenium Server. По умолчанию это 4444.

  • browserStartCommand : (необязательно) строка, которая сообщает Selenium, какой веб-браузер на компьютере, на котором запущен экземпляр Selenium Server, использовать. Значением по умолчанию является «* firefox»

По умолчанию CFSelenium использует Firefox для проведения тестов браузера (что имеет смысл, поскольку большую часть времени вы будете использовать плагин Selenium IDE Firefox для создания ваших тестов). Чтобы CFSelenium запускал тестовый пример через другой браузер, вам нужно будет передать другую строку browserStartCommand в функцию init (). Вы можете увидеть список различных строк browserStartCommand в этом посте в StackOveflow:  http://stackoverflow.com/questions/2569977/list-of-selenium-rc-browser-launchers .

Иногда это так просто, но иногда это не так … а когда это не так, это может быть реальная боль, чтобы понять. После некоторых проб и ошибок я смог заставить Selenium Server / CFSelenium взаимодействовать со всеми браузерами, которые я установил на своих ноутбуках с Windows и Macintosh. Вот что я должен был сделать в каждом случае:

Fire Fox

Windows 7: Типичная стенограмма браузера для запуска Firefox («* firefox») работает только в том случае, если Selenium Server может использовать вашу операционную систему, чтобы узнать, где находится исполняемый файл браузера. Поскольку Firefox не задокументирован в моем значении PATH для Windows 7, мне пришлось добавить полный путь к файлу firefox.exe в строке браузера. Так что мое заявление об экземпляре CFSelenium в итоге выглядело так:

selenium = createObject("component","CFSelenium.selenium").init("http://www.cnn.com","localhost", 4444, "*firefox C:\Program Files\Firefox\firefox.exe");

Mac OS X: стандартная / обычная строка браузера Firefox «* firefox» работала просто отлично.

Гугл Хром

Windows 7: обычная строка браузера «* googlechrome» работала нормально.

Mac OS X: обычная строка браузера «* googlechrome» работала нормально.

Сафари

Windows 7: Safari поставляется с блокировщиком всплывающих окон, который включен по умолчанию, и пока он не позволяет серверу Selenium что-либо делать, кроме открытия окна браузера. Чтобы отключить этот блокировщик в версии для Windows, щелкните значок шестеренки в правом верхнем углу и нажмите «Блокировать всплывающие окна», чтобы снять его. Как только я это сделал, я смог запустить Safari, используя строку браузера «* safariproxy» (она не будет принимать обычную строку браузера Safari) и указав расположение исполняемого файла Safari (аналогично тому, что я делал с Firefox).

Mac OS X: как только я отключил блокировку всплывающих окон (нажав «Safari» в строке меню и сняв флажок «Блокировать всплывающие окна»), я смог запустить Safari с обычной строкой браузера «* safari» >.

опера

Windows 7: хотя Opera 9 была последней версией Opera, официально поддерживаемой для Selenium Server, я смог запустить Opera 11.01, используя строку «* opera» и указав расположение файла opera.exe .

Mac OS X: это было сложнее всего понять. Вот что я в итоге сделал:

  • Мне пришлось определить прокси-сервер в Opera, который будет принимать команды, поступающие с Selenium Server, используя следующие шаги:

    1. В строке меню Opera я нажал «Opera», а затем «Preferences».

    2. В окне Prefences я щелкнул «Advanced», затем выбрал «Networks» в столбце опций слева, затем нажал кнопку «Proxy Servers …».

    3. В окне «Прокси-серверы» я поставил галочку рядом с «HTTP», ввел «localhost» в текстовое поле справа от флажка «HTTP» и ввел «4444» в соответствующем поле «Порт».

  • Я не мог использовать ни одну из специфичных для Opera строк браузера. В итоге мне пришлось использовать строку браузера «* custom» и указать местоположение исполняемого файла Opera … это НЕ «Opera.app», указанный в папке «Приложение», а файл в этом пакете / папке приложения:

selenium = createObject("component","CFSelenium.selenium").init("http://www.cnn.com","localhost", 4444, "*custom /Applications/Opera.app/Contents/MacOS/Opera");

Даже после всего этого, поведение было все еще немного ненадежным. Иногда Opera начинала с диалогового окна с вопросом, хотите ли вы восстановить последний сеанс (как если бы Opera потерпела крах после последнего сеанса). Иногда Selenium не проходил мимо страницы запуска Opera с быстрым набором: указание Opera использовать реальную домашнюю страницу помогло, но это изменение настроек, похоже, не вступило в силу при следующем запуске Opera, а скорее после запуска.

Internet Explorer 8

Windows 7: я не смог использовать обычную строку браузера «* iexplore», но «* iexploreproxy» работал нормально (и поскольку IE был частью ОС, мне не нужно было указывать путь к исполняемому файлу).

Mac OS X: если вы используете программное обеспечение виртуальной машины (я использую VMWare Fusion) на своем Mac для запуска среды Windows, вы можете запустить свои тесты CFSelenium для IE, запущенного на этой виртуальной машине, выполнив следующие действия:

  • Поместите копию .jar-файла Selenium Server на экземпляр виртуальной машины Windows точно так же, как когда вы устанавливали CFSelenium на свой Mac.

  • Узнайте, каков IP-адрес вашего экземпляра виртуальной машины. Самый простой способ сделать это — открыть интерфейс командной строки в Windows (нажав кнопку «Пуск», выбрав «Выполнить …», набрав «cmd» в текстовом поле и нажав клавишу Enter), и напечатав «ipconfig» -all «для получения текущей сетевой статистики для экземпляра Windows: вам нужен адрес в разделе» IP-адрес «.

  • Используйте интерфейс командной строки для запуска Selenium Server на вашем экземпляре Windows (так же, как на вашем Mac).

  • Создайте экземпляр CFSelenium, используя IP-адрес виртуальной машины Windows и «* iexplore» в качестве строки браузера. Поэтому, если IP-адрес вашей виртуальной машины Windows — 172.16.9.9, оператор instantation будет выглядеть так:

selenium = createObject("component","CFSelenium.selenium").init("http://www.cnn.com","172.16.9.9", 4444, "*iexplore");

Когда вы запустите CFSelenium против Selenium Server на своей виртуальной машине Windows, вы увидите, что Selenium Server на виртуальной машине выполняет всю работу, даже если результаты теста будут сообщены в любом браузере, который вы используете для запуска теста на Сторона Mac.

… Таким образом я заставил все браузеры работать с CFSelenium на моих компьютерах. Это может отличаться для вашего компьютера (ов), но, надеюсь, информация, которую я предоставил здесь, по крайней мере, поможет вам.