如何摆脱 double_click_input() 行动的延迟?
How to get rid of delays on double_click_input() actions?
有什么方法可以消除 double_click_input() 操作的延迟?
我想做的是双击编辑框,然后在此处键入密钥。可能这两个动作都有一些延迟,所以整个过程执行起来很慢。
代码:
myApp = Desktop(backend='uia').window(title_re='myTitle_re')
myApp.window(auto_id='myAutoId').window(title='myTitle').double_click_input()
myApp.descendants(title='myTitle', control_type='Edit')[1].type_keys('myKeys')
还有一个问题:我尝试在这里使用 double_click(),但它总是抛出异常:
AttributeError: WindowSpecification class has no 'double_click'
method.
然后我试了myApp.window(auto_id='myAutoId').window(title='myTitle').wrapper_object().double_click()
并得到:
AttributeError: 'ListItemWrapper' object has no attribute
'double_click'
我应该更改什么才能完成这项工作?
我正在使用 pywinauto 0.6.3。
回答您的第一个问题,您可以使用全局设置将一些计时设置为空。对于 double_click_input
:
from pywinauto.timings import Timings
Timings.after_clickinput_wait = 0.0
Timings.after_setcursorpos_wait = 0.0
对于真实的用户输入(*_input
方法),更改时间可能会导致修改后的序列不起作用。但是您可以自行承担风险进行试验。有时最好使用静默方法,使用 window 消息,如 WM_CLICK
(对于 "win32" 后端)或 UIAutomation 模式,如 Invoke Pattern(对于 "uia" 后端)。
double_click
未针对 "uia" 实现,因为不清楚应将哪个 UIAutomation 模式解释为双击操作。我们有方法 .invoke()
和 ButtonWrapper.click = invoke
别名。但是对于非按钮 InvokePattern 可能有不同的含义。这就是为什么我们将其保留为 .invoke()
.
P.S。关于遗留 属性 文本...它可以通过 .legacy_properties()[u'Value']
为您的案例(或返回的字典中的其他值)获得。有使用 ValuePattern 的方法set_window_text/set_edit_text
,因此可以在没有任何技巧的情况下静默设置文本。
有什么方法可以消除 double_click_input() 操作的延迟?
我想做的是双击编辑框,然后在此处键入密钥。可能这两个动作都有一些延迟,所以整个过程执行起来很慢。
代码:
myApp = Desktop(backend='uia').window(title_re='myTitle_re')
myApp.window(auto_id='myAutoId').window(title='myTitle').double_click_input()
myApp.descendants(title='myTitle', control_type='Edit')[1].type_keys('myKeys')
还有一个问题:我尝试在这里使用 double_click(),但它总是抛出异常:
AttributeError: WindowSpecification class has no 'double_click' method.
然后我试了myApp.window(auto_id='myAutoId').window(title='myTitle').wrapper_object().double_click()
并得到:
AttributeError: 'ListItemWrapper' object has no attribute 'double_click'
我应该更改什么才能完成这项工作?
我正在使用 pywinauto 0.6.3。
回答您的第一个问题,您可以使用全局设置将一些计时设置为空。对于 double_click_input
:
from pywinauto.timings import Timings
Timings.after_clickinput_wait = 0.0
Timings.after_setcursorpos_wait = 0.0
对于真实的用户输入(*_input
方法),更改时间可能会导致修改后的序列不起作用。但是您可以自行承担风险进行试验。有时最好使用静默方法,使用 window 消息,如 WM_CLICK
(对于 "win32" 后端)或 UIAutomation 模式,如 Invoke Pattern(对于 "uia" 后端)。
double_click
未针对 "uia" 实现,因为不清楚应将哪个 UIAutomation 模式解释为双击操作。我们有方法 .invoke()
和 ButtonWrapper.click = invoke
别名。但是对于非按钮 InvokePattern 可能有不同的含义。这就是为什么我们将其保留为 .invoke()
.
P.S。关于遗留 属性 文本...它可以通过 .legacy_properties()[u'Value']
为您的案例(或返回的字典中的其他值)获得。有使用 ValuePattern 的方法set_window_text/set_edit_text
,因此可以在没有任何技巧的情况下静默设置文本。