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

时间:2014-07-19 17:03:37

标签: selenium jenkins robotframework

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

我的预感是我需要在某处设置显示变量以使浏览器正常打开。

我的执行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用户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

浏览器似乎已打开&#39;但它从未出现在桌面上。我试过把&#39; DISPLAY =:0&#39;在命令之前运行pybot但没有改变。

3 个答案:

答案 0 :(得分:4)

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

(在Linux中,你可以使用Xvnc或类似的虚假X服务器玩弄技巧,甚至还有Jenkins插件可以简化它。)

您的替代方案是:

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

答案 1 :(得分:0)

这个问题在这里回答了我的问题,请放下:stackoverflow.com/questions/8787682 / ... Jenkins在后台运行测试作为服务。它必须在osx / unix上做类似的事情。

答案 2 :(得分:0)

我们需要运行无头浏览器。我们已经为Firefox实现了这一目标。我们在jenkins Slave中使用了centOS。

我在此处记录了它:http://dailychitty.blogspot.in/2014/07/configuring-jenkins-agent-to-run-robot.html