单击IAccessible(MSAA)元素而不使用DefaultAction

2024-10-03 15:35:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试使用pyMSAA在python上使用MSAA创建一个自动化测试

当按钮没有DefaultAction时,我遇到了一个问题

b.accDoDefaultAction()

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "msaa.py", line 215, in accDoDefaultAction
    self.IAccessible._IAccessible__com_accDoDefaultAction(objChildId)
_ctypes.COMError: (-2147352573, 'Member not found.', (None, None, None, 0, None)
)

我发现没有违约行为是正常的。在

有没有办法在这些元素上单击(双击)?发送一些事件等。。。 我正在考虑按坐标单击,但这可能不是一个好主意。在

谢谢


Tags: innonemostlinecall按钮filelast
1条回答
网友
1楼 · 发布于 2024-10-03 15:35:10

发送鼠标点击绝对是可能的(使用SendInput或等效的Python)。你要做的第一件事是验证你的可点击点实际上是指向你想要点击的对象(也就是说,可点击点可能被另一个窗口/控件遮住)。在

您可以使用AccessibleObjectFromPoint(这似乎是由pyMSAA中的msaa.point包装的)来检查该点下的可访问对象是否与您尝试单击的对象相同。在

现在,您可以检查accLocation中的各个点来找到您的可单击点。最好的初始点是中心;如果不能,尝试在x和y方向上的宽度(或高度,视情况而定)的1/3、1/2、2/3s的点。在

相关问题 更多 >