Я пытаюсь настроить функциональные тесты на моем сервере Centos, используя Selenium Web Server и Phpunit.
Когда я запускаю тесты, я получаю сообщение об ошибке в командной строке:
PHPUnit_Extensions_Selenium2TestCase_WebDriverException:
Unable to connect to host vmdev-pando-56 on port 7055 after 45000 ms.
Firefox console output: Error: no display specified
Я занимаюсь исследованиями более трех дней и не могу найти решение. Я прочитал много сообщений, в том числе SOverflow. Насколько я понимаю, все настроено правильно, и все же я испытываю ту же проблему, что и многие другие люди, и решения, которые работают для них, похоже, не работают для меня.
Это моя установка:
Centos 6.5 x86
в командной строке (без графического интерфейса)5.6
3.7
хотя я тоже пробовал с 5.3
2.53
скачал с Вот, хотя я тоже пробовал с 2.9
xorg-x11-server-Xvfb
38.0.1
хотя я тоже пробовал с 38.7
Я также установил DISPLAY
в :99
в моем профиле bash:
Вот что я делаю, чтобы настроить среду:
/usr/bin/Xvfb :99 -ac -screen 0 1280x1024x24 &
/usr/bin/java -jar /usr/lib/selenium/selenium-server-standalone-2.53.0.jar &
firefox &
(хотя я знаю, что это не обязательно, но на всякий случай)Все три процесса работают в фоновом режиме.
На данный момент я знаю, что Firefox работает так же, как и X-буфер. Я могу запустить команду firefox http://www.stackoverflow.com &
а затем сделать снимок буфера, выполнив import -window root /tmp/buffer_snapshot.png
что-то вроде этого:
Я конечно получил предупреждение на терминале: Xlib: extension "RANDR" missing on display ":99"
Но я читал бесчисленное количество раз, что это не проблема.
Во всяком случае, проблема начинается только сейчас.
Я написал довольно простой функциональный тест (обратите внимание, что другие написанные мною тесты, кроме функциональных, работают нормально, поэтому среда в этом отношении выглядит правильно настроенной):
<?php
namespace My\APP\BUNDLE\Tests\Functional\MyTest;
use PHPUnit_Extensions_Selenium2TestCase;
class HelloWorldTest extends PHPUnit_Extensions_Selenium2TestCase {
protected function setUp() {
$this->setBrowser('firefox');
$this->setHost('localhost');
$this->setPort(4444);
$this->setBrowserUrl('http://www.stackoverflow.com');
}
public function testTitle() {
$this->url('/');
$this->assertEquals("1", "1");
}
}
И когда я запускаю тест, выдавая phpunit HelloWorldTest.php
Я получаю следующую ошибку:
PHPUnit_Extensions_Selenium2TestCase_WebDriverException:
Unable to connect to host vmdev-pando-56 on port 7055
after 45000 ms. Firefox console output:
Error: no display specified
Проверяя файл журнала, созданный селеном, я обнаружил следующие (интересные) строки:
21:55:46.135 INFO - Creating a new session for Capabilities [{browserName=firefox}]
[...]
java.util.concurrent.ExecutionException:
org.openqa.selenium.WebDriverException:
java.lang.reflect.InvocationTargetException
Build info: version: '2.53.0',
revision: '35ae25b',
time: '2016-03-15 17:00:58'
System info: host: 'vmdev-pando-56',
ip: '127.0.0.1',
os.name: 'Linux',
os.arch: 'i386',
os.version: '2.6.32-431.el6.i686',
java.version: '1.7.0_99'
Driver info: driver.version: unknown
[...]
(Файл содержит полный дамп трассировки стека и исходное сообщение дисплей не указан)
Нет ошибок в Xvfb
журнальный файл.
На данный момент я понятия не имею, что я делаю неправильно.
Кто-нибудь может помочь?
большое спасибо
Причина для Невозможно подключиться ошибка в том, что версия Selenium Server не знает, как работать с установленной вами версией Firefox. Selenium автономный веб-сервер 2.53 является последним и лучшим. Селен-Firefox-драйвер также 2,53. Firefox версия 38 старая. Я использую Firefox 45.0.1 с селеном 2.53.
Других решений пока нет …