(EE) config/hal:尝试在 centos 上运行 Xvfb 时 NewInputDeviceRequest 失败 (2)

(EE) config/hal:尝试在 centos 上运行 Xvfb 时 NewInputDeviceRequest 失败 (2)

我正在尝试在 CI 服务器 (Jenkins) 上设置 Selenium 测试。它在 Centos 5 上运行,没有监视器。对于 Selenium 测试,我需要一种运行 Firefox 的方法,因此我安装了 Xvfb。我正在使用 selenium-maven-plugin 来启动 Xvfb。

<profile>
    <id>xvfb-selenium</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>selenium-maven-plugin</artifactId>
                <version>2.0</version>
                <executions>
                    <execution>
                        <id>xvfb</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>xvfb</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

它位于配置文件内,因为我想在 CI 上运行它,但开发机器不需要它。

我再次使用 selenium-maven-plugin 来运行我的 selenese 测试

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>selenium-maven-plugin</artifactId>
    <version>2.0</version>
    <executions>
        <execution>
            <id>nessos-selenium-tests</id>
            <phase>integration-test</phase>
            <configuration>
                <browser>*firefox</browser>
                <suite>src/test/resources/test-suite.html</suite>
                <startURL>${selenium.startURL}</startURL>
            </configuration>
            <goals>
                <goal>selenese</goal>
            </goals>
        </execution>
    </executions>
</plugin>

现在,当我尝试运行它时,我在 Jenkins 中收到此错误:

message : Selenium is already running on port 4444. Or some other service is.
Stack trace : 
java.net.BindException: Selenium is already running on port 4444. Or some other service is.
    at org.openqa.selenium.server.SeleniumServer.start(SeleniumServer.java:410)

这并没有告诉我太多信息,所以我做了更多调查。在 target/selenium/xvfb.log 中,我收到此错误:

(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)

到现在我都不知道该说什么了。从 maven 日志中我可以看到 xvfb 目标在 selenese 之前运行,输出如下:

Created dir: /home/jenkins/workspace/myBuild/target/selenium
Launching Xvfb
[INFO] Redirecting output to: /home/jenkins/workspace/myBuild/target/selenium/xvfb.log
Waiting for Xvfb...
Xvfb started

我已尝试按照此处的说明操作:http://mojo.codehaus.org/selenium-maven-plugin/examples/headless-with-xvfb.html

我做了

chmod u+s `which Xvfb`

事情和错误信息改变为:

Fatal server error:
 PAM authentication failed, cannot start X server.
        Perhaps you do not have console ownership?

headless-with-xvfb 页面底部有修复该问题的说明。我也这样做了,现在(EE) config/hal: NewInputDeviceRequest failed (2)又出现了。

有人知道我该如何继续调试这个错误吗?或者有人知道这个错误到底意味着什么吗?

答案1

真尴尬 :) 它已经正常工作了,可以忽略该错误消息。我的最终解决方案是在预集成阶段使用插件启动 xvfb,在集成测试阶段使用 WebDriver API 运行 jUnit 测试。Maven 运行完成后,Xvfb 将关闭

相关内容