Jenkins作为服务时如何在无头模式下执行Selenium测试

210次阅读
没有评论

问题描述

在Windows 10机器上安装了Jenkins作为服务,并配置了一个Maven项目(Selenium项目,打开Chrome浏览器并执行一些测试用例)。但是,如果构建该项目,所有的测试用例都会在Chrome无头模式下执行,而不是打开实际的浏览器。

用户尝试了以下解决方案:
1. 检查Jenkins服务选项中的“允许服务与桌面交互”。
2. 在注册表中将“NoInteractiveServices”标志设置为0。

但是,这些解决方案似乎都没有起作用。用户发现,当使用Jenkins.war文件执行Jenkins时,测试用例会按预期(非无头模式)运行,但使用Jenkins作为服务时却不行。

用户想知道为什么会出现这种情况。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

如果你计划在无头和传统环境中运行相同的应用程序,可以使用以下命令行参数:

java -Djava.awt.headless=true

这将启用Java的无头模式,使得应用程序在没有显示器的情况下运行。

方案2

你可以在Jenkins的配置中添加环境变量来控制浏览器的启动方式。具体操作如下:
1. 进入Jenkins的管理页面,点击“Manage Jenkins”。
2. 在左侧导航栏中选择“Configure System”。
3. 在页面下方的“Global Properties”部分,找到“Environment Variables”。
4. 在“Environment Variables”中添加以下变量:
– Name: DISPLAY
– Value: 0

方案3

如果你希望在Windows服务中运行Jenkins,并且想要在其他用户账户中运行浏览器,可以尝试以下步骤:
1. 打开服务管理器,停止Jenkins服务。
2. 进入Jenkins的安装目录(例如:C:\Program Files(x86)\Jenkins)。
3. 以管理员身份运行命令提示符,并执行以下命令:
bash
java -jar jenkins.war

这将以普通的Windows CLI进程方式启动Jenkins。

如果上述解决方案仍然无效,你可以参考以下链接中的讨论:
Jenkins as service
General queries

方案4

虽然已经晚了,但这个解决方案可能对其他人有帮助。

唯一对我有效的解决方案是将Jenkins从服务切换到独立模式。不幸的是,其他解决方案对我来说都不起作用,可能是因为最新版本的Windows 10根本不允许从服务中运行GUI应用程序。然而,Dev提供的信息对我理解为什么会出现这个问题非常有用。

但是,在将Jenkins从服务切换到独立模式时,你将不得不重新配置服务器。为了避免这种情况,我详细描述了备份、安全退出(服务)、启动(独立模式)和恢复的步骤。

以下是具体步骤:
1. 在服务实例运行时,安装ThinBackup插件,并进行必要的设置,备份Jenkins的作业、插件、用户数据、配置等。
2. 使用URL [jenkins-url]/exit(例如:http://localhost:8080/exit)安全停止Jenkins服务实例。
3. 打开终端,进入Jenkins的安装目录,并运行以下命令:
bash
java -jar jenkins.war

等待服务器启动。
4. 使用之前的URL,按照推荐的插件进行初始配置,并创建新的凭据登录。
5. 在独立实例上安装ThinBackup插件,并恢复备份。这个过程可能需要几分钟来完成。

现在,你将能够通过实际启动浏览器来运行测试,并像之前配置的那样使用Jenkins服务器。

注意:独立实例不会像服务实例那样自动启动服务器。为了实现自动启动,请创建一个批处理文件,其中包含Jenkins的启动命令,并按照这里的描述进行操作。

以上是解决这个问题的几种方案,希望能对你有所帮助。

正文完