Цель: Я хочу получить следующие атрибуты элемента пользовательского интерфейса: имя, класс, тип элемента управления и имя родителя. Элемент может принадлежать Outlook или веб-приложению, которое открывается в обозревателе Inte rnet.
Python интерпретатор: 3.7
Python библиотека : Comtypes
Проведенное исследование:
OUTLOOK: Чтобы получить атрибуты определенного элемента в Microsoft Outlook, я используя комтипы для создания объекта UIautomationCore.dll. Я мог бы получить имя и класс, основываясь на точке определенного элемента, но я не могу найти способ получить тип элемента управления и, с другой стороны, имя родительского элемента, имеющего эту точку. Я обнаружил в Microsoft UI Automation, что должен использовать TreeWalker для получения информации о родительском элементе. Тем не менее, я не знаю, как реализовать в Python.
WEB-приложение (Inte rnet Explorer): Я использую ту же библиотеку, и я могу получить элементы, которые находится в браузере Inte rnet Explorer. Тем не менее, когда я не могу получить эти атрибуты одной кнопки, которые находятся в содержимом веб-приложения (тела).
Вопрос: Как получить тип элемента управления и имя родительского элемента в Outlook с помощью автоматизации пользовательского интерфейса Microsoft? и Как получить эти атрибуты, когда я работаю с Inte rnet Explorer?.
Мой текущий код:
import comtypes
from comtypes.client import *
comtypes.client.GetModule('UIAutomationCore.dll')
from comtypes.gen.UIAutomationClient import *
# get IUIAutomation interface
uia = CreateObject(CUIAutomation._reg_clsid_, interface=IUIAutomation)
# import tagPOINT from wintypes
from ctypes.wintypes import tagPOINT
point = tagPOINT(1833, 95)
element = uia.ElementFromPoint(point)
walker = ViewWalker
parentElement = walker.GetParent(element)
name=element.currentName
parentName = parentElement.currentName
print("elementName:", name)
print("parentElementName: ", parentName)
Избранное: Может ли кто-нибудь дать некоторые рекомендации о том, как реализовать интерфейс IUIAutomationElement COM с Python ?. Любая ссылка или книга может быть очень полезна для понимания.