Pywinauto - 有时不对特定元素/窗口执行操作

时间:2016-03-24 14:19:28

标签: pywinauto

有时,当我想从可见窗口/菜单中对元素单击或执行任何其他操作时,它不会找到该元素,即使它是可见的并且它不执行所需的操作

停止/启动应用程序会暂时解决问题,但这需要花费一些时间。

您是否知道在发生此类情况时还有其他解决方法或解决方案?

2 个答案:

答案 0 :(得分:0)

您可以尝试timings.WaitUntilPasses()函数重复某些操作,直到超时结束或操作完成。

如果下次未找到控件,则可能有不同的根本原因。其中之一是控件布局已更改(可能有点),best_match算法为控件分配其他名称。每次都取决于具体情况。请询问有关具体用例的更详细问题。

还有更多方法可以为控件搜索设置更精确的标准。这样的事情可能有助于避免重复:

# #32770 means a dialog like message box
app.Window_(title='Exact title', class_name='#32770').OK.Click()

# click first button with a "Set" caption (if there are few such buttons)
app.MainWindow.ChildWindow(title='Set', class_name='Button', found_index=0).Click()

可在find_windows() function docs

中找到可能的搜索条件的完整列表

答案 1 :(得分:0)

我遇到过这样的情况。就我而言,应用程序太忙,无法响应UI操作。因此,对于那些特定点,我使用了while循环并在循环内执行操作并等待特定的窗口/控件状态。如果没有发生,则代码在循环中重复。当动作和预期行为实现时,循环中断。