pywinauto脚本在执行文件vs cmd提示时的工作方式不同

时间:2018-06-05 18:57:05

标签: python-3.6 pywinauto

我是一个蟒蛇& pywinauto新手并试图为Windows应用程序制作脚本。但是脚本在执行文件(" python test.py")和cmd中的工作方式不同。

这是代码。

checkout([ $class: 'GitSCM', 
  branches: [[name: '*/master']], 
  doGenerateSubmoduleConfigurations: false, 
  extensions: [[
    $class: 'MessageExclusion', excludedMessage: '.*skip-?ci.*'
  ]], 
  submoduleCfg: [], 
  userRemoteConfigs: [[
    credentialsId: 'xxx', url: 'git@github.com:$ORG/$REPO.git'
  ]]
])

当我将这个脚本作为文件(python test.py)运行时,我得到的错误就像链接一样。 enter image description here

当我在CMD中逐个运行脚本时,没有错误。它工作正常。 enter image description here

这两种方式有什么区别?执行自动化脚本的最佳方法是什么?

仅供参考,我使用的是python 3.6和pywinauto 0.6.4

先谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是典型的计时问题(由于手动步骤执行之间存在延迟,因此无法逐步重现)。 roomdlg.Connect.click()等待现有的“连接”按钮,但不等待启用状态。所以错误信息是有意义的。

解决方案应该是:

roomdlg.Connect.wait("enabled") # timeout is optional param, default is 5 sec.
roomdlg.Connect.click()

即使按钮已启用,某些应用可能会遇到延迟OnClick()处理程序订阅等问题。在这种情况下,您可能需要app.wait_cpu_usage_lower()来指示应用进程CPU使用率低于阈值。

关于时间安排的当前文档在这里:https://pywinauto.readthedocs.io/en/latest/wait_long_operations.html(需要扩展全局时序设置)。