gpt4 book ai didi

python - Pywinauto - 双击的替代品

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:11 24 4
gpt4 key购买 nike

目前我正在使用 Pywinauto 和 Behave 来测试桌面应用程序,但我遇到了障碍。在我的自动化中,有一次我需要使用双击,目前我的工作方式是这样的:

@step("User selects {row} in Multi payment window")
def step_impl(context, row):
"""
:param row: that we are going to fill.
:type context: behave.runner.Context
"""
tries = 5
for i in range(tries):
try:
context.popup[str(row)].click_input(button='left', double=True)
except:
if i < tries - 1: # i is zero indexed
continue
else:
break

效果很好!但如果我不在场或机器打开,这将导致问题,因为我正在使用 click_input() 所以我尝试使用 click(double=True) 但是它似乎无法点击它,我能做些什么来解决这个问题吗?

这是运行 print_control_identifiers() 的结果,我要双击的项目是第 0 行和第 1 行,它们是自定义项目。

print_control_identifiers

最佳答案

这是非常低级的,试图模拟 winapi 双击。可能有更多惯用的方法来做到这一点。

见代码here和实际事件顺序的解释here :

Double-clicking the left mouse button actually generates a sequence of four messages: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK, and WM_LBUTTONUP.

我使用 app.windows()[0].handle 提取窗口句柄,然后从中创建 HwndWrapper HwndWrapper(handle) 和然后调用 HwndWrapper.double_click:

from pywinauto import Application
from pywinauto.controls.hwndwrapper import HwndWrapper

app = Application(backend='uia').start(r'MFCApplication1.exe')
HwndWrapper(app.windows()[0].handle).double_click()
app.kill()

然后包装器重新生成序列。

即使您的窗口不可见,这仍然有效。

关于python - Pywinauto - 双击的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53159984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com