import comtypesfrom comtypes import CoCreateInstanceimport comtypes.clientfrom comtypes.gen.UIAutomationClient import *
uia = Noneroot_element = Nonedef uia_init(): global uia global root_element uia = CoCreateInstance(CUIAutomation._reg_clsid_, interface=IUIAutomation, clsctx=comtypes.CLSCTX_INPROC_SERVER) root_element = uia.GetRootElement()
def get_window_element(title): """ titleに指定したウィンドウのAutomationElement を取得する デスクトップ上でtitleが重複している場合、最初に見つかったものを返す """ win_element = root_element.FindFirst(TreeScope_Children, uia.CreatePropertyCondition( UIA_NamePropertyId, title)) return win_element def find_save_control(base_element): condition = uia.CreatePropertyCondition(UIA_NamePropertyId, "保存") ctl_elements = base_element.FindAll(TreeScope_Subtree, condition) return [ ctl_elements.GetElement(i) for i in range(ctl_elements.Length) ]
def click_button(element): """ 指定したelement をIUIAutomationInvokePattern.Invoke() でクリックする 指定したelementのIsInvokePatternAvailableプロパティがFalseの場合何もしない """ isClickable = element.GetCurrentPropertyValue(UIA_IsInvokePatternAvailablePropertyId) if isClickable == True: ptn = element.GetCurrentPattern(UIA_InvokePatternId) ptn.QueryInterface(IUIAutomationInvokePattern).Invoke()
评论