Selenium Error: не указано отображение

Я установил selenium-server-standalone-2.42.2.jar в виртуальном ящике debian

и установлен Firefox 29.0

и пытается запустить следующий script с phpunit, который является единственным файлом в каталоге:

<?php
class TestLogin extends PHPUnit_Extensions_Selenium2TestCase{

    public function setUp()
    {
            $this->setHost('localhost');
            $this->setPort(4444);
            $this->setBrowser('firefox');
            $this->setBrowserUrl('http://debian-vm/phpUnitTutorial');
    }

    public function testHasLoginForm()
    {
            $this->url('index.php');

            $username = $this->byName('username');
            $password = $this->byName('password');

            $this->assertEquals('', $username->value());
            $this->assertEquals('', $password->value());
    }
}

Я получаю следующую ошибку:

1) TestLogin::testHasLoginForm
PHPUnit_Extensions_Selenium2TestCase_WebDriverException: Unable to connect to host
127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
Error: no display specified
Error: no display specified

Что это значит?

У меня красные несколько потоков, и, видимо, мне пришлось сделать следующее, что я пробовал:

1), чтобы ввести это в командную оболочку

export PATH=:0;

Результат: у меня такая же ошибка.

2) Я установил vnc4server и получил debian-vm: 1 как приложение, затем установил export PATH=debian-vm:1 запустил его с помощью realvnc, а в средстве просмотра (которое работает) у меня возникла та же проблема.

Ответ 1

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

Вам нужно установить Xvfb и сначала браузер:

apt-get install xvfb
apt-get install firefox-mozilla-build

затем запустите Xvfb:

Xvfb &

установите DISPLAY и запустите Selenium:

export DISPLAY=localhost:0.0
java -jar selenium-server-standalone-2.44.0.jar

а затем вы сможете выполнить свои тесты.

Ответ 2

Конечно, сценарий - это путь, однако повторение всех возможных значений DISPLAY не так хорошо, как использование правильного значения DISPLAY. Также нет необходимости в xvfb, по крайней мере, в debian/ubuntu. Селен можно запускать локально или удаленно с использованием текущей переменной сеанса DISPLAY, если это правильно. См. Мое сообщение в http://thinkinginsoftware.blogspot.com/2015/02/setting-display-variable-to-avoid-no.html, но вкратце:

# Check current DISPLAY value
$ echo $DISPLAY
:0
# If xclock fails as below the variable is incorrect
$ xclock
No protocol specified
No protocol specified
Error: Can't open display: :0
# Find the correct value for the current user session
$ xauth list|grep `uname -n`
uselenium/unix:10  MIT-MAGIC-COOKIE-1  48531d0fefcd0a9bde13c4b2f5790a72
# Export with correct value
$ export DISPLAY=:10
# Now xclock runs
$ xclock