Нажмите на элемент 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.