在没有GUI的Linux机器上通过jenkins执行Selenium测试(仅限CLI) - HEADLESS MODE

Ami*_*oda 2 linux selenium headless jenkins selenium-webdriver

这是关于Selenium自动化测试.我有一些Jenkins作业设置用于一些测试执行.Jenkins是在没有GUI(仅限CLI)Ubuntu机器上安装的. 因此,当我运行脚本时,似乎显然无法找到Web浏览器.
这项工作在windows中完美运行.在Windows中我得到这样的结果.

窗口成功结果

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
06/08/2015 00:04:47,996   INFO [main] (BasicTestObject.java:251) - ======BEGIN Test workflow============
06/08/2015 00:04:48,002   INFO [main] (BasicTestObject.java:252) - BEGIN Test: MlpBvt
06/08/2015 00:04:48,002   INFO [main] (BasicTestObject.java:253) - ======BEGIN Test workflow============

06/08/2015 00:04:58,862  DEBUG [main] (DefaultUIDriver.java:300) - Opened url: http://mlpdemo.qaprod.ecollege.com/
06/08/2015 00:04:58,912   INFO [main] (BasicTestObject.java:296) - -------------BEGIN Test Method-------------------
06/08/2015 00:04:58,913   INFO [main] (BasicTestObject.java:297) - BEGIN Test Method: verifyAdminLogin
06/08/2015 00:04:58,913   INFO [main] (BasicTestObject.java:298) - -------------BEGIN Test Method-------------------
06/08/2015 00:04:58,969  DEBUG [main] (DefaultUIElement.java:980) - Waiting 60000ms for element to be displayed [Locator = {By.xpath: //input[@id='clientname']}]
06/08/2015 00:04:59,058  DEBUG [main] (DefaultUIElement.java:538) - Element is displayed [Locator = {By.xpath: //input[@id='clientname']}]
06/08/2015 00:04:59,059  DEBUG [main] (DefaultUIElement.java:992) - After 89ms, element is displayed [Locator = {By.xpath: //input[@id='clientname']}]
Run Code Online (Sandbox Code Playgroud)

在Linux上我得到这样的

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite

06/08/2015 00:18:46,834   INFO [main] (BasicTestObject.java:251) - ======BEGIN Test workflow============
06/08/2015 00:18:46,839   INFO [main] (BasicTestObject.java:252) - BEGIN Test: MlpBvt
06/08/2015 00:18:46,839   INFO [main] (BasicTestObject.java:253) - ======BEGIN Test workflow============
06/08/2015 00:18:46,998  DEBUG [main] (CapturePageOnFailureListener.java:186) - CapturePageOnFailure found 2 parameters 
06/08/2015 00:18:47,002   WARN [main] (DebugUIDriver.java:311) - Called quit() on debugDriver containing null uiDriver
06/08/2015 00:18:47,025   INFO [main] (BasicTestObject.java:304) - -------------END Test Method-------------------
06/08/2015 00:18:47,026   INFO [main] (BasicTestObject.java:305) - END Test Method: verifyAdminLogin
06/08/2015 00:18:47,026   INFO [main] (BasicTestObject.java:306) - -------------END Test Method-------------------
06/08/2015 00:18:47,031   INFO [main] (BasicTestObject.java:304) - -------------END Test Method-------------------
06/08/2015 00:18:47,032   INFO [main] (BasicTestObject.java:305) - END Test Method: VerifyProfessorLogin
06/08/2015 00:18:47,032   INFO [main] (BasicTestObject.java:306) - -------------END Test Method-------------------
06/08/2015 00:18:47,036   INFO [main] (BasicTestObject.java:304) - -------------END Test Method-------------------
06/08/2015 00:18:47,036   INFO [main] (BasicTestObject.java:305) - END Test Method: VerifyStudentLogin
06/08/2015 00:18:47,037   INFO [main] (BasicTestObject.java:306) - -------------END Test Method-------------------
06/08/2015 00:18:47,038   INFO [main] (BasicTestObject.java:283) - ======END Test workflow============
06/08/2015 00:18:47,038   INFO [main] (BasicTestObject.java:284) - END Test: MlpBvt
06/08/2015 00:18:47,040   INFO [main] (BasicTestObject.java:285) - ======END Test workflow============
06/08/2015 00:18:47,100  DEBUG [main] (ProcessTool.java:36) - Getting current tool for LINUX
06/08/2015 00:18:47,100   WARN [main] (ProcessTool.java:40) - Could not find ProcessTool for LINUX
06/08/2015 00:18:47,101   WARN [main] (ProcessTool.java:88) - There was no ProcessTool for LINUX
06/08/2015 00:18:47,101  DEBUG [main] (ProcessTool.java:115) - process count for There was no ProcessTool for LINUX:1
Tests run: 12, Failures: 1, Errors: 0, Skipped: 11, Time elapsed: 1.976 sec <<< FAILURE!

Results :

Failed tests: 
Run Code Online (Sandbox Code Playgroud)

它被提到为

06/08/2015 00:18:47,002   WARN [main] (DebugUIDriver.java:311) - Called quit() on debugDriver containing null uiDriver
Run Code Online (Sandbox Code Playgroud)

请提供一些有关此事的技术专长.我可以在linux上运行这个工作吗?请帮帮我

dmr*_*dmr 5

对于unix系统,你必须使用Xvfb在无头模式下运行测试,对于jenkins你可以使用xvfb插件

简单的例子如何在无头模式下打开firefox

from xvfbwrapper import Xvfb
from selenium import webdriver

xf = Xvfb()  #  xf = Xvfb(1920, 1080) - will create virtual display with 1920x1080 size
xf.start()
# browser won't appear
driver = webdriver.Firefox()
driver.get("http://google.com")
Run Code Online (Sandbox Code Playgroud)