【问题标题】:Selenium Test execution via Jenkins on Ubunt server 16.04 without GUI (CLI-only) - HEADLESS MODE在没有 GUI 的 Ubuntu 服务器 16.04 上通过 Jenkins 执行 Selenium 测试(仅限 CLI) - 无头模式
【发布时间】:2017-06-26 03:17:17
【问题描述】:

我正在通过 Jenkins 进行 Selenium 自动化测试。

我已经在我的 PC 上完成了 Jenkins 设置并以 Maven 项目运行测试。它可以正常工作。

Jenkins 是在没有 GUI(仅限 CLI)的 Ubuntu 服务器上设置的。

  • 我在 Jenkins 中安装了一个额外的插件 Xvfb

  • 设置全局属性DISPLAY:0IN Jenkins

  • 同样在 Ubunt 服务器上设置变量

    root@jenkins:~# echo $DISPLAY :0
    

因此,当我通过 Jenkins 运行 selenium 脚本时,出现以下错误:

runBrowser(testCases.ApplicationTableTempl) 经过时间:1.068 秒

runBrowser(testCases.LoginTest) 已用时间:0.196 秒

结果:

测试失败:ApplicationTableTempl.runBrowser:31 » AWT 无法连接 到 X11 窗口服务器 u... LoginTest.runBrowser:34 » NoClassDefFound 无法初始化类 sun.awt.X...

有人建议我如何解决这个问题?

【问题讨论】:

    标签: java selenium-webdriver


    【解决方案1】:

    看起来根本原因来自您自己的代码:

    testCases.LoginTest.runBrowser -> utility.Utility.startRecording -> java.awt.Toolkit.getDefaultToolkit

    去掉utility.Utility.startRecording中对java.awt.Toolkit的依赖,应该不会失败。

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题。我可以通过以 root 身份登录服务器并执行以下命令来解决它。

      $ xhost +
      

      【讨论】:

        【解决方案3】:

        我只是在我的代码中注释掉,现在它不使用屏幕录像功能(startRecording)。见herehere

        我试过了:

        root@jenkins:~# xhost +
        

        得到以下回复:

        xhost:  unable to open display ":0"
        

        在 Jenkins 中出现以下错误:

        -------------------------------------------------------
         T E S T S
        -------------------------------------------------------
        Running TestSuite
        Test case = ApplicationTableTempl
        browserName = chrome
        Starting ChromeDriver 2.23.409687 (c46e862757edc04c06b1bd88724d15a5807b84d1) on port 10447
        Only local connections are allowed.
        Feb 08, 2017 4:01:31 PM org.openqa.selenium.remote.ProtocolHandshake createSession
        INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
        log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).
        log4j:WARN Please initialize the log4j system properly.
        log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
        [0.219][SEVERE]: Error initializing NSS with a persistent database (sql:/var/lib/jenkins/.pki/nssdb): libsoftokn3.so: cannot open shared object file: No such file or directory
        [0.219][SEVERE]: Error initializing NSS without a persistent database: NSS error code: -5925
        [0.220][SEVERE]: nss_error=-5925, os_error=0
        #0 0x0000004d9d2e <unknown>
        #1 0x0000004ab14b <unknown>
        #2 0x0000006b42b8 <unknown>
        #3 0x00000061eedb <unknown>
        #4 0x000000530c67 <unknown>
        #5 0x000000516e8b <unknown>
        #6 0x000000508aa7 <unknown>
        #7 0x000000478d2a <unknown>
        #8 0x00000060bb39 <unknown>
        #9 0x000000609b44 <unknown>
        #10 0x0000004da266 <unknown>
        #11 0x0000004acdc5 <unknown>
        #12 0x0000004ad0b8 <unknown>
        #13 0x0000004ad40b <unknown>
        #14 0x0000004af079 <unknown>
        #15 0x0000004b9b6e <unknown>
        #16 0x0000004cd7e2 <unknown>
        #17 0x0000004ca793 <unknown>
        #18 0x7fa08ab376ba start_thread
        #19 0x7fa08822882d clone
        
        Feb 08, 2017 4:02:31 PM org.openqa.selenium.remote.ProtocolHandshake createSession
        INFO: Detected dialect: OSS
        OS = linux, Browser = 
        Test case = LoginTest
        browserName = firefox
        Tests run: 2, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 62.272 sec <<< FAILURE! - in TestSuite
        runBrowser(testCases.ApplicationTableTempl)  Time elapsed: 61.716 sec  <<< FAILURE!
        org.openqa.selenium.NoSuchSessionException: no such session
        (Driver info: chromedriver=2.23.409687 (c46e862757edc04c06b1bd88724d15a5807b84d1),platform=Linux 4.4.0-62-generic x86_64) (WARNING: The server did not provide any stacktrace information)
        Command duration or timeout: 22 milliseconds
        Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:49:13 -0700'
        System info: host: 'jenkins', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-62-generic', java.version: '1.8.0_121'
        Driver info: org.openqa.selenium.chrome.ChromeDriver
        Capabilities [{message=unknown error: Chrome failed to start: exited abnormally
        (Driver info: chromedriver=2.23.409687 (c46e862757edc04c06b1bd88724d15a5807b84d1),platform=Linux 4.4.0-62-generic x86_64), platform=ANY}]
        Session ID: d438dd092af3c51f3f72ca37527e0e91
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216)
        at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:658)
        at org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteWindow.maximize(RemoteWebDriver.java:882)
        at factory.BrowserFactory.getBrowser(BrowserFactory.java:57)
        at testCases.ApplicationTableTempl.runBrowser(ApplicationTableTempl.java:34)
        
        runBrowser(testCases.LoginTest)  Time elapsed: 0.207 sec  <<< FAILURE!
        java.awt.AWTError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable.
        at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
        at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
        t java.security.AccessController.doPrivileged(Native Method)
        at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
        at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:126)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at java.awt.Toolkit$2.run(Toolkit.java:860)
        at java.awt.Toolkit$2.run(Toolkit.java:855)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:854)
        at utility.Utility.startRecording(Utility.java:183)
        at testCases.LoginTest.runBrowser(LoginTest.java:34)
        
        
        Results :
        
        Failed tests: 
        ApplicationTableTempl.runBrowser:34 » NoSuchSession no such session
        (Driver ...
        LoginTest.runBrowser:34 » AWT Can't connect to X11 window server using ':0' as...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-13
          • 1970-01-01
          • 2012-04-24
          相关资源
          最近更新 更多