从 Jenkins 运行 Robot Framework 测试时,浏览器永远不会打开

Ski*_*ent 3 selenium jenkins robotframework

我正在尝试在我的 OSX 笔记本电脑上运行来自 Jenkins 的 RF/Selenium2Library 测试。Jenkins 以用户“jenkins”的身份默认安装。我安装了 Jenkins 的 RF 插件并设置了环境变量,一切正常,除了浏览器永远不会打开(既不是 firefox 也不是 chrome),并且测试失败,selenium 超时说这样那样的元素从未出现过。

我的预感是我需要在某处设置一个显示变量才能让浏览器正确打开。

这是我从 Jenkins 为这个项目执行的“执行 shell”命令:

source /Users/Shared/Jenkins/.bash_profile; pybot -b /Users/Shared/Jenkins/robot_output/dbug.log -i SMOKE01 -d /Users/Shared/Jenkins/robot_output/ /Users/KWHome/Dev/PycharmProjects/BHI/Tests; 退出 0

同样,Selenium 似乎认为浏览器在某处打开并等待初始元素出现,但他们从来没有这样做,因为实际上没有浏览器打开。我是一个完整的 Jenkins 新手,非常感谢您对理解这里发生的事情的任何建议。

添加:

以下是 Jenkins 构建后创建的 jenkins 用户 dbug 日志的一些输出:

20140719 21:28:23.914 - INFO - Opening browser 'firefox' to base url 'https://staging.azzi-mvconnects.com/'
20140719 21:28:27.273 - DEBUG - Opened browser with session id a2414ad7-f523-7441-8a54-dd5c68f4049b
20140719 21:28:27.274 - INFO - +----- END KW: Selenium2Library.Open Browser (3360)
20140719 21:28:27.274 - INFO - +----- START KW: Selenium2Library.Maximize Browser Window [ ]
20140719 21:28:27.415 - INFO - +----- END KW: Selenium2Library.Maximize Browser Window (141)
20140719 21:28:27.416 - INFO - +----- START KW: Selenium2Library.Wait Until Element Is Visible [ ${home_login_button} ]
20140719 21:28:32.500 - INFO - +------ START KW: Selenium2Library.Capture Page Screenshot [ ]
20140719 21:28:32.909 - INFO - </td></tr><tr><td colspan="3"><a href="selenium-screenshot-1.png"><img src="selenium-screenshot-1.png" width="800px"></a>
20140719 21:28:32.909 - INFO - +------ END KW: Selenium2Library.Capture Page Screenshot (409)
20140719 21:28:32.910 - FAIL - Element 'ctl00_LoginLink' was not visible in 5 seconds
Run Code Online (Sandbox Code Playgroud)

浏览器似乎已“打开”,但它从未出现在桌面上。我尝试将 'DISPLAY=:0' 放在运行 pybot 的命令之前,但没有改变。

sti*_*sti 5

如果您的 Jenkins 作业需要运行显示 GUI 的内容,则您无法在作为后台服务运行的 Jenkins 中运行该构建(无论是在 Windows、Mac 还是 Linux 上)。

(在 Linux 中,您可以使用 Xvnc 或类似的假 X 服务器来玩弄花招,甚至还有 Jenkins 插件可以让它变得更简单。)

您的选择是:

  • 使用 GUI 会话登录并在终端窗口中输入java -jar /path/to/jenkins.war. 当 Jenkins 在 GUI 上下文中启动时,Jenkins 启动的任何进程都能够与 GUI 系统对话并绘制窗口。
  • 或者您可以在 Jenkins 中设置一个 JNLP 从站,然后使用 GUI 会话登录,打开 Web 浏览器访问您的 Jenkins 并启动连接到 Jenkins 主站的 JNLP 从站,现在从站正在 GUI 上下文中运行,您可以配置要在从站上执行的作业。在从站中执行的进程将能够与 GUI 系统对话并绘制窗口。