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

标签 linux selenium jenkins selenium-webdriver headless

这是关于 Selenium 自动化测试。我有一个 Jenkins 作业设置用于一些测试执行。Jenkins 设置在没有 GUI 的 Ubuntu 机器上(仅限 CLI)。 因此,当我运行脚本时,它似乎明显找不到网络浏览器
这项工作在 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']}]

在 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要在 headless (headless)模式下运行测试,对于 Jenkins ,您可以使用 xvfb plugin

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

关于linux - 在没有 GUI 的 Linux 机器上通过 jenkins 执行 Selenium 测试(仅限 CLI)- HEADLESS 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31848410/

相关文章:

c++ - 您如何在 Geany 中编译/构建/执行 C++ 项目?

linux - 预期为整数表达式 (Bash)

java - Selenium - 单独通过,TestSuite 没有

java - 从行项目列表中提取 href 值

c# - 使用 Visual C++ 和 C# 持续集成堆栈

linux - Vim - CtrlP(或病原体)只加载帮助页面?

c++ - 为什么我们可以映射到一个文件但超过文件大小?

c# - Selenium 测试查找显示是否为 None

jenkins - 如何以编程方式列出 jenkins 作业脚本路径

windows - 如何通过 Cygwin 使用 Windows git 创建的符号链接(symbolic link)