我正在使用Jenkins来安排我的selenium / java自动化测试(将测试脚本打包到.jar
文件中)。
我创建了一个.bat
文件来触发.jar
文件,我正在调用Jenkins的.bat
文件。
当我手动触发测试时,双击.bat
文件,一切运行顺利。但是当我尝试通过Jenkins运行相同的操作时,每个测试用例都会出现以下错误:
“系统找不到指定的文件”
Jenkins正在成功调用.bat
文件,因为我可以看到jenkins控制台上显示的测试用例名称(存在于.jar
文件中)。
在我的java代码中,我使用.\
来表示我的jar文件所在的“当前目录”以及一个excel文件,该文件驱动自动化框架。即使.bat
文件存在于同一位置,我也在.bat
文件和jenkins上提供了完全限定的路径。
我无法硬编码,必须在我的java代码中使用./
。我在Windows Server(而不是我的本地机器)上运行它。
答案 0 :(得分:0)
标识放置.bat文件的当前dir路径,并将其追加/添加到系统路径变量。完成后,允许jenkin执行.bat文件。
答案 1 :(得分:0)
当您在Jenkins上运行时,这是一个与您的工作目录不同的问题。
最容易修复:
而是为您的构建步骤执行Windows Batch Command。在第一行,放置cd C:/Desktop/QA/
来更改您的工作目录以匹配您在本地执行的操作。在第二行使用trigger.bat
或C:\Desktop\QA\trigger.bat
。
更强大的修复:
在您的Java代码中,您在引用其他文件时使用.\
。这基本上意味着当前目录,如果您在不同的工作目录中,它将不是您想要的。相反,您可以look at this question/answer显示如何引用.jar
文件所在的目录而不是工作目录。总之这样做:
return new File(MyClass.class.getProtectionDomain().getCodeSource()
.getLocation().toURI().getPath());
答案 2 :(得分:0)
问题出在Jenkins的安装上。一个devops工程师为我解决了这个问题。不得不在其中安装Tomcat和jenkins。他说:“如果Jenkins安装为UI,则无法打开另一个UI。因此我们应该在单独的服务器上安装.war文件,为jenkins创建单独的UI,我的应用程序UI(firefox)可以在本地启动”