点击没有DefaultAction的IAccessible(MSAA)元素



我一直在尝试使用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)
)

我发现没有DefaultAction是正常的。

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

谢谢

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

您可以使用AccessibleObjectFromPoint(这似乎是由pyMSAA中的msaa.point包装)来检查点下的可访问对象实际上是您试图单击的同一对象。

现在你可以检查accLocation中的各个点来找到你的可点击点。最佳起始点是中心;如果失败,在x和y方向上分别尝试1/3,1/2,2/3的宽度(或高度,视情况而定)。

相关内容

  • 没有找到相关文章

最新更新