Исключение при запуске Selenium на экземпляре AWS EC2
Я сталкиваюсь с этим исключением, когда запускаю тестовый пример Selenium с использованием драйвера Firefox на экземпляре AWS EC2, который является сервером без монитора. Я установил Firefox и все необходимые изменения для него
org.openqa.selenium.WebDriverException: org.openqa.selenium.WebDriverException: не удалось подключиться к двоичному FirefoxBinary(/opt/firefox/firefox-bin) через порт 7055; вывод процесса следующий: �*** e = [Exception... "Компонент возвратил код ошибки: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]" nsresult: "0x80570016 (NS_ERROR_XPC_GS_RURS): chrome: ch::: frame: ch://browser/content/utilityOverlay.js:: getShellService:: line 339" data: no]
Пожалуйста, кто-нибудь может мне помочь с этим исключением?
2 ответа
Сначала установите xvfb, который позволит вам запускать его с "виртуальным экраном".
sudo yum -y install xorg-x11-server-Xvfb
Тогда вы должны прочитать этот полезный пост, который поможет вам установить Firefox на Amazon EC2. Это потому, что вы не можете просто сделать sudo yum установить Firefox на EC2. Итак, в основном вы создаете файл (я использовал эту суть) для экземпляра EC2, который он предоставляет, а затем запускаете его для установки firefox и всех его зависимостей. http://joekiller.com/2012/06/03/install-firefox-on-amazon-linux-x86_64-compiling-gtk/
Когда скрипт запускается, он устанавливает Firefox в
/usr/local/bin/firefox
по умолчанию я верю.
После того, как он будет установлен, вам, вероятно, потребуется добавить его в свой путь, как объясняет приведенная выше ссылка. Но вы также должны добавить системную переменную DISPLAY, хотя сделайте что-то вроде этого...
cat << EOF >> ~/.bashrc
PATH=/usr/local/bin:\$PATH
DISPLAY=:99
export PATH
export DISPLAY
EOF
Затем вы должны запустить xvfb для экрана 99, чтобы он мог запускать Firefox на своем "виртуальном экране". Вот так...
Xvfb :99 -screen 0 1024x768x16 &
Затем, надеюсь, что при повторном запуске тестов на селен он найдет Firefox на пути и запустит его на правильном "виртуализированном" экране этого экземпляра EC2.
В качестве примечания: я ни в коем случае не являюсь экспертом любого типа в amazon linux, так что... Гудлак.
В качестве альтернативы вы можете исследовать работу с сервером selenium, который вы можете запустить на экземпляре Amazon EC2 Ubuntu Micro, который вы можете легко настроить, чтобы иметь графический интерфейс.
Не удалось подключиться к двоичному FirefoxBinary(/opt/firefox/firefox-bin) через порт 7055
Вам нужно обновить Selenium Server (до 2.53.x), чтобы он мог поддерживать вашу более новую версию Firefox. В качестве альтернативы используйте другой веб-драйвер (например, Chrome).
Если вы используете Maven, вот строки для использования в pom.xml
:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.1</version>
<scope>test</scope>
</dependency>
Увидеть: