【问题标题】:jenkins run pywinauto start not usejenkins 运行 pywinauto 启动不使用
【发布时间】:2021-11-11 02:44:28
【问题描述】:

我在 vscode ide 上运行我的代码或使用 cmd 都可以,但是当我使用 jenkins 运行 windows 批处理 cmd 时会失败(应用程序启动没有用),我的 jenkins 也可以在管理员上运行

    C:\ProgramData\Jenkins\.jenkins\workspace\Agent_Automation>python test_enf_ins_gui.py  
Traceback (most recent call last):
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\timings.py", line 436, in wait_until_passes
    func_val = func(*args, **kwargs)
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\findwindows.py", line 87, in find_element
    raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'class_name': 'MsiDialogCloseClass', 'backend': 'uia', 'visible_only': False}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "test_enf_ins_gui.py", line 5, in <module>
    r'C:\Users\txone\Downloads\Install.exe').connect(class_name="MsiDialogCloseClass",timeout=20)
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\application.py", line 994, in connect
    *(), **kwargs
  File "C:\Program Files\Python37\lib\site-packages\pywinauto\timings.py", line 458, in wait_until_passes
    raise err
pywinauto.timings.TimeoutError

【问题讨论】:

  • 对于一些现代应用程序,您可能还需要Applcation(backend="uia")。默认的“win32”后端使用旧的 Win32 API 来获取文本数据和层次结构。我猜您使用“win32”后端,因为使用了 class_name。对于“uia”,它通常是 control_type。但是“win32”的运行速度更快。

标签: jenkins pywinauto


【解决方案1】:

如果您将 Jenkins 代理作为服务运行,Windows 将不会授予您创建/控制任何 GUI 的权限。您必须在普通用户下启动 Jenkins 代理,而不是作为服务(可能使用 Windows 调度程序)。在Remote Execution Guide 中收集了许多提示。如何处理 RDP 或 VNC 桌面有很多事情。请仔细阅读。

附: PsExec 也可能在 Jenkins/Java 下挂起(已知问题,可能不是你的情况),但如果有一天你需要它,你可以使用具有类似选项的开源模拟 PAExec。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多