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

Selenium test execution via jenkins on linux machine without GUI (CLI-only) - HEADLESS MODE

这是关于 Selenium 自动化测试的。我有一个用于某些测试的 Jenkins 作业设置 executions.Jenkins 在没有 GUI(仅 CLI)的 Ubuntu 机器上设置。 所以当我 运行 脚本似乎 显然找不到网络浏览器 .
这项工作 在 windows 中工作得非常好。在 Windows 我得到这样的结果。

Window 成功结果

-------------------------------------------------------
 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']}]

在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: 

它被称为

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

请提供一些关于此事的技术专长。我可以 运行 这份工作 linux 吗?请帮帮我

那么对于 unix 系统你必须使用 Xvfb to run tests in headless mode, for jenkins you can use xvfb plugin

如何在无头模式下打开 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")