pywinauto 脚本在执行文件和交互模式时的工作方式不同
pywinauto scripts work differently in execution of file vs interactive mode
我正在尝试为 Windows 应用程序制作脚本。但是脚本在执行文件 (python test.py
) 与 Python 交互模式时的工作方式不同。
这是代码。
import pywinauto
app = pywinauto.application.Application()
app.start(r"C:\customPrograms\ControlStation.exe")
app.window(title_re=u'Login').Wait('visible', timeout=60, retry_interval=1)
dlg = app.Login
dlg.Edit1.TypeKeys("testSuper")
dlg.PasswordEdit.TypeKeys("test")
dlg.OK.SetFocus()
dlg.OK.click()
app.window(title_re=u'Room select').Wait('visible', timeout=60,
retry_interval=1)
roomdlg = app.Roomselect
roomdlg.Connect.click()
app = pywinauto.Application().connect(title='tmpSuper - local')
app.testSuper.MenuBar.MenuBarClickInput('#4->#1->#0', app)
app.testSuper.People.click()
当我运行这个脚本作为一个文件(python test.py
)时,我得到了这个错误:
pywinauto.base_wrapper.ElementNotEnabled
当我在交互式 Python 会话中一个一个地 运行 脚本时,没有错误。它工作正常。
这两种方式有什么区别?执行自动化脚本的最佳方式是什么?
我正在使用 Python 3.6 和 pywinauto 0.6.4。
这是典型的计时问题(您无法逐步重现它,因为手动步骤执行之间存在延迟)。 roomdlg.Connect.click()
等待现有的 "Connect" 按钮,但不等待启用状态。所以报错信息是有意义的。
解决方案应该是:
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(但需要使用全局计时设置进行扩展)。
我正在尝试为 Windows 应用程序制作脚本。但是脚本在执行文件 (python test.py
) 与 Python 交互模式时的工作方式不同。
这是代码。
import pywinauto
app = pywinauto.application.Application()
app.start(r"C:\customPrograms\ControlStation.exe")
app.window(title_re=u'Login').Wait('visible', timeout=60, retry_interval=1)
dlg = app.Login
dlg.Edit1.TypeKeys("testSuper")
dlg.PasswordEdit.TypeKeys("test")
dlg.OK.SetFocus()
dlg.OK.click()
app.window(title_re=u'Room select').Wait('visible', timeout=60,
retry_interval=1)
roomdlg = app.Roomselect
roomdlg.Connect.click()
app = pywinauto.Application().connect(title='tmpSuper - local')
app.testSuper.MenuBar.MenuBarClickInput('#4->#1->#0', app)
app.testSuper.People.click()
当我运行这个脚本作为一个文件(python test.py
)时,我得到了这个错误:
pywinauto.base_wrapper.ElementNotEnabled
当我在交互式 Python 会话中一个一个地 运行 脚本时,没有错误。它工作正常。
这两种方式有什么区别?执行自动化脚本的最佳方式是什么?
我正在使用 Python 3.6 和 pywinauto 0.6.4。
这是典型的计时问题(您无法逐步重现它,因为手动步骤执行之间存在延迟)。 roomdlg.Connect.click()
等待现有的 "Connect" 按钮,但不等待启用状态。所以报错信息是有意义的。
解决方案应该是:
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(但需要使用全局计时设置进行扩展)。