问题描述
在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的启动命令,并按照这里的描述进行操作。
以上是解决这个问题的几种方案,希望能对你有所帮助。