首页 > 解决方案 > 运行批处理文件是正常的,但是在 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

标签: jenkinspywinauto

解决方案


错误是您启动应用程序的路径

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)

这将帮助您打开应用程序


推荐阅读