Нажмите на элемент IAccessible(MSAA) без DefaultAction

Я пытался создать автоматизированный тест с MSAA на Python с использованием PyMSAA

Я столкнулся с проблемой, когда кнопка не имеет 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 ответ

Отправка щелчка мыши определенно возможна (используя SendInput или эквивалент Python). Первое, что вы должны сделать, это убедиться, что ваша кликабельная точка на самом деле идет к объекту, на который вы хотите щелкнуть (то есть кликабельная точка может быть скрыта другим окном / элементом управления).

Вы можете использовать AccessibleObjectFromPoint (кажется, это msaa.point в pyMSAA), чтобы убедиться, что доступный объект под точкой фактически тот же объект, на который вы пытаетесь щелкнуть.

Теперь вы можете проверить различные пункты в accLocation чтобы найти свою кликабельную точку. Лучшая начальная точка - центр; если это не удается, попробуйте указать точки на 1/3, 1/2, 2/3 ширины (или высоты, в зависимости от ситуации) в направлениях x и y.

Другие вопросы по тегам