Попытка запустить тесты Selenium с использованием Hudson - «Ошибка: отображение не указано» - PullRequest
2 голосов
/ 16 июня 2010

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

Команда, которую я использую для запуска сборки:

mvn clean selenium:xvfb install

журнал ошибок:

[INFO] [selenium:xvfb {execution: default-cli}]
[INFO] Starting Xvfb...
[INFO] Using display: :20
[INFO] Using Xauthority file: /tmp/Xvfb4467650583214148352.Xauthority
Deleting: /tmp/Xvfb4467650583214148352.Xauthority
xauth:  creating new authority file /tmp/Xvfb4467650583214148352.Xauthority
Created dir: /var/lib/hudson/jobs/Selenium/workspace/selenium/target/selenium
Launching Xvfb
Waiting for Xvfb...
[INFO] Redirecting output to: /var/lib/hudson/jobs/Selenium/workspace/selenium/target/selenium/xvfb.log
Xvfb started
...
[INFO] [selenium:start-server {execution: start}]
Launching Selenium Server
Waiting for Selenium Server...
[INFO] Including display properties from: /var/lib/hudson/jobs/Selenium/workspace/selenium/target/selenium/display.properties
[INFO] Redirecting output to: /var/lib/hudson/jobs/Selenium/workspace/selenium/target/selenium/server.log
[INFO] User extensions: /var/lib/hudson/jobs/Selenium/workspace/selenium/target/selenium/user-extensions.js
Selenium Server started
[INFO] [selenium:selenese {execution: run-selenium}]
[INFO] Results will go to: /var/lib/hudson/jobs/Selenium/workspace/selenium/target/results-firefox-suite.html
...
<~30 seconds pause>
...
Error: no display specified
...

pom.xml:

<groupId>org.codehaus.mojo</groupId>
<artifactId>selenium-maven-plugin</artifactId>
<version>1.0.1</version>
<executions>
    <execution>
        <id>start</id>
        <phase>pre-integration-test</phase>
        <goals>
            <goal>start-server</goal>
        </goals>
        <configuration>
            <logOutput>true</logOutput>
            <background>true</background>
            <port>5123</port>
        </configuration>
    </execution>

    <execution>
        <id>run-selenium</id>
        <phase>integration-test</phase>
        <goals>
            <goal>selenese</goal>
        </goals>
    </execution>

    <execution>
        <id>stop</id>
        <phase>post-integration-test</phase>
        <goals>
            <goal>stop-server</goal>
        </goals>
    </execution>

</executions>
<configuration>
    <browser>*firefox</browser>
    <suite>src/test/selenium/suite.html</suite>
    <startURL>http://localhost:${env.port}</startURL>
</configuration>

Я также пытался заставить его работать, добавив выполнение для xvfb, но тоже не получилось.

Ответы [ 4 ]

4 голосов
/ 16 июня 2010

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

1 голос
/ 30 июля 2013

Если безголовое тестирование не подходит для вас, вы можете запустить тесты без автономного режима, вам просто нужно указать дисплей.

Для быстрого теста попробуйте отключить управление доступом xhost, используя xhost + в терминале.

Чтобы узнать, какие у вас настройки дисплея, наберите env в терминале и снимитеномер, назначенный вашей переменной DISPLAY.Например, DISPLAY:1.0.

Далее необходимо установить переменную отображения в Hudson / Jenkins.Перейдите на целевую страницу Jenkins, затем нажмите Управление Jenkins> Управление узлами> Мастер> Настройка .Установите флажок Переменные среды , затем установите DISPLAY в поле имени и значение, аналогичное нашему примеру :1.0.

0 голосов
/ 06 февраля 2015

Нет необходимости работать в режиме без головы.Selenium можно запускать локально или удаленно, используя текущую переменную сеанса 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
0 голосов
/ 17 июня 2010

Хм, возможно, вы также можете настроить сервер Selenium (на самом деле Selenium RC, я думаю) на машину Hudson (хотя для этого требуется X) и использовать ее для запуска ваших тестов. Кажется, что плагин Maven selenium принимает также значение порта и все, поэтому он должен подключиться к RC и запустить нужные вам браузеры.

Но этот режим без головы может лучше подойти для ваших нужд.

...