jenkins - 运行批处理文件是正常的,但是在 Jenkins 中运行时出现错误
问题描述
我有自动化测试的问题。我使用 Pywinauto 测试我的程序,当我使用 Python 3.7 并在 Windows 中运行批处理文件时它正在工作。但是,当我使用“执行 Windows 批处理命令”并在 Jenkins 中插入批处理文件时,它不会启动我的应用程序,它使用 pywinauto 运行,而只运行 Python。下面是我要运行的批处理文件。
@echo off
C:
"C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe" "C:\Nam\Working\pywinauto\SPITest.py"
在我的SPITest.py
文件中,我使用 pywinauto 的启动功能在 Windows 中打开一个应用程序:
VisionAnalysisTool = Application(backend="uia").start('C:\KohYoung\KY-3030\Vision\VisionAnalysisTool.exe',timeout=5)
VisionAnalysisTool.VisionAnalysisTool.wait('enabled')
在 Jenkins 中的构建中,我输入了执行 Windows 批处理命令的命令
call "C:\Nam\Working\pywinauto\SPI_Pywinauto.bat"
这是 Jenkins 中的控制台输出:
Running as SYSTEM
Building in workspace C:\Windows\system32\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\SPI_Winauto_Test
[SPI_Winauto_Test] $ cmd /c call C:\Windows\TEMP\jenkins7879113300338047675.bat
C:\Windows\system32\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\SPI_Winauto_Test>call "C:\Nam\Working\pywinauto\SPI_Pywinauto.bat"
Traceback (most recent call last):
File "C:\Nam\Working\pywinauto\SPITest.py", line 26, in <module>
VisionAnalysisTool.VisionAnalysisTool.wait('enabled')
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\pywinauto\application.py", line 530, in wait
lambda: self.__check_all_conditions(check_method_names, retry_interval))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\pywinauto\timings.py", line 375, in wait_until
raise err
pywinauto.timings.TimeoutError: timed out
解决方案
错误是您启动应用程序的路径
VisionAnalysisTool = Application(backend="uia").start('C:\KohYoung\KY-3030\Vision\VisionAnalysisTool.exe',timeout=5)
在这行代码'C:\KohYoung\KY-3030\Vision\VisionAnalysisTool.exe'
中是应用程序的路径。但是你不习惯逃避反斜杠。
所以你可以做其中之一
VisionAnalysisTool = Application(backend="uia").start(r'C:\KohYoung\KY-3030\Vision\VisionAnalysisTool.exe',timeout=5)
或者
VisionAnalysisTool = Application(backend="uia").start('C:\\KohYoung\\KY-3030\\Vision\\VisionAnalysisTool.exe',timeout=5)
这将帮助您打开应用程序
推荐阅读
- firebase - 我想将实时数据库转换为云 Firestore
- mongodb - mongodb 可以在单个字段上每秒提供多少增量?
- c# - WPF 导航删除以前的页面
- haskell - 在 Haskell 中,使用给定列表中的重复元素创建一个包含子列表的列表
- python - Gstreamer 管道在 EOS 上挂起
- python - Pyinstaller 等到脚本完成?
- c++ - Makefile 的问题
- python - 将 Pandas 系列中的文本替换为另一个系列中的值
- html - 溢出-x 无法在手机 2021 上运行
- awk - 使用 System() 仅在 Awk 内运行 Shell 命令一次“每个命令”,即仅打印一次“文本”