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

时间:2013-04-19 07:29:25

标签: python ui-automation msaa iaccessible

我一直在尝试使用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是正常的。

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

由于

1 个答案:

答案 0 :(得分:0)

发送鼠标单击绝对是可能的(使用SendInput或Python等效项)。您首先要做的是验证您的可点击点实际上是否要转到您想要点击的对象(即,可点击的点可能会被另一个窗口/控件遮挡)。

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

现在,您可以检查accLocation中的各个点,以找到您的可点击点。最好的初始点是中心;如果失败,请在x和y方向上尝试宽度(或适当高度)的1 / 3,1 / 2,2 / 3s点。