3

I've been trying to create an automated test with MSAA on python using pyMSAA

I faced with a problem when a button does not have 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)
)

I found out that the absence of DefaultAction is normal.

Is there any way to make a click(double-click) on such elements? Send some event, etc... I am thinking about clicking by coordinates, but it may be not a good idea.

Thanks

4

1 回答 1

0

发送鼠标点击绝对是可能的(使用 SendInput 或 Python 等价物)。您首先要做的是验证您的可点击点实际上是指向您要点击的对象(即,可点击点可能被另一个窗口/控件遮挡)。

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

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

于 2013-07-28T06:32:21.663 回答