mhumpher Posted March 20, 2017 Share Posted March 20, 2017 I'm pretty new to using the UIAWrapper.au3 and UI Automation. I'm working on automating a UI where I have a button without a title and I'm using a text box, which is child of the button to get at it. I'm able to get the button element and click on it, but every time I run the script when it finishes it gives the following error: Here is my code: #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <constants.au3> #include <WinAPI.au3> #include <debug.au3> #include <CUIAutomation2.au3> #include <UIAWrappers.au3> #include <WinAPI.au3> #include <WinAPISys.au3> $cAppIdent = "title:=SomeProgram" $oApp = _UIA_getFirstObjectOfElement($UIA_oDesktop, $cAppIdent, $treescope_children) $oTW=ObjCreateInterface($UIA_pTW, $sIID_IUIAutomationTreeWalker, $dtagIUIAutomationTreeWalker) Local $oparentHandle $oParent=_UIA_getFirstObjectOfElement($oApp,"name:=Setu_p", $treescope_subtree) $oTW.getparentelement($oParent,$oparentHandle) ;Get Parent button element $oParentHandle=objcreateinterface($oparentHandle,$sIID_IUIAutomationElement, $dtagIUIAutomationElement) $setupbutton = _UIA_getFirstObjectOfElement($oParentHandle,"class:=Button", $treescope_subtree) _UIA_Action($setupbutton, "click") Exit Link to comment Share on other sites More sharing options...
junkew Posted March 20, 2017 Share Posted March 20, 2017 which os version? What is inspect.exe tell you on the button? Output of the simplespy. Run as admin. Hard to say without more context FAQ 31 How to click some elements, FAQ 40 Test automation with AutoIt, Multithreading CLR .NET Powershell CMDLets Link to comment Share on other sites More sharing options...
mhumpher Posted March 22, 2017 Author Share Posted March 22, 2017 I'm running on Windows 7 64bit. This is a company computer and I don't have access to inspect.exe. Below is the ouput from simplyspy. The MG ALFA application crashes if I try to spy certain areas of the UI that are blank and some buttons. expandcollapse popupMouse position is retrieved 43-180 At least we have an element title: [Setu_p] class: [TextBlock] Having the following values for all properties: Title is: <Setu_p> Class := <TextBlock> controltype:= <UIA_TextControlTypeId> ,<50020> , (0000C364) 29;174;23;12 *** Parent Information top down *** 4: Title is: <***Filepath Removed*** - MG-ALFA Version 10.4.2000> Class := <Window> controltype:= <UIA_WindowControlTypeId> ,<50032> , (0000C370) 0;0;1920;1039 "Title:=***Filepath Removed*** - MG-ALFA Version 10.4.2000;controltype:=UIA_WindowControlTypeId;class:=Window"" 3: Title is: <> Class := <NavigationButtonMenu> controltype:= <UIA_CustomControlTypeId> ,<50025> , (0000C369) 3;135;75;871 "Title:=;controltype:=UIA_CustomControlTypeId;class:=NavigationButtonMenu"" 2: Title is: <> Class := <ListBox> controltype:= <UIA_ListControlTypeId> ,<50008> , (0000C358) 3;137;75;871 "Title:=;controltype:=UIA_ListControlTypeId;class:=ListBox"" 1: Title is: <Milliman.LTS.UI.Core.Navigation.SimpleNavigationButton> Class := <ListBoxItem> controltype:= <UIA_ListItemControlTypeId> ,<50007> , (0000C357) 4;138;73;65 "Title:=Milliman.LTS.UI.Core.Navigation.SimpleNavigationButton;controltype:=UIA_ListItemControlTypeId;class:=ListBoxItem"" 0: Title is: <> Class := <Button> controltype:= <UIA_ButtonControlTypeId> ,<50000> , (0000C350) 4;138;73;65 "Title:=;controltype:=UIA_ButtonControlTypeId;class:=Button"" ;~ *** Standard code maintainable *** #include "UIAWrappers.au3" AutoItSetOption("MustDeclareVars", 1) _UIA_setVar("oP1","Title:=***Filepath Removed*** - MG-ALFA Version 10.4.2000;controltype:=UIA_WindowControlTypeId;class:=Window") ;***Filepath Removed*** - MG-ALFA Version 10.4.2000 _UIA_setVar("oP2","Title:=;controltype:=UIA_CustomControlTypeId;class:=NavigationButtonMenu") ; _UIA_setVar("oP3","Title:=;controltype:=UIA_ListControlTypeId;class:=ListBox") ; _UIA_setVar("oP4","Title:=Milliman.LTS.UI.Core.Navigation.SimpleNavigationButton;controltype:=UIA_ListItemControlTypeId;class:=ListBoxItem") ;Milliman.LTS.UI.Core.Navigation.SimpleNavigationButton _UIA_setVar("oP5","Title:=;controltype:=UIA_ButtonControlTypeId;class:=Button") ; ;~ $oUIElement=_UIA_getObjectByFindAll("Setu_p.mainwindow", "title:=Setu_p;ControlType:=UIA_TextControlTypeId", $treescope_subtree) _UIA_setVar("oUIElement","Title:=Setu_p;controltype:=UIA_TextControlTypeId;class:=TextBlock") ;ControlType:=UIA_TextControlTypeId;classname:=TextBlock") ;~ Actions split away from logical/technical definition above can come from configfiles ;~_UIA_Action("oP1","highlight") _UIA_Action("oP1","setfocus") ;~_UIA_Action("oP2","highlight") _UIA_Action("oP2","setfocus") ;~_UIA_Action("oP3","highlight") _UIA_Action("oP3","setfocus") ;~_UIA_Action("oP4","highlight") _UIA_Action("oP4","setfocus") ;~_UIA_Action("oP5","highlight") _UIA_Action("oP5","setfocus") ;~_UIA_action($oUIElement","highlight") ;~_UIA_action($oUIElement,"click") ;~_UIA_action("oUIElement","highlight") ;~_UIA_action("oUIElement","click") ;~ *** Standard code Flexible*** #include "UIAWrappers.au3" AutoItSetOption("MustDeclareVars", 1) Local $oP4=_UIA_getObjectByFindAll($UIA_oDesktop, "Title:=***Filepath Removed*** - MG-ALFA Version 10.4.2000;controltype:=UIA_WindowControlTypeId;class:=Window", $treescope_children) _UIA_Action($oP4,"setfocus") Local $oP3=_UIA_getObjectByFindAll($oP4, "Title:=;controltype:=UIA_CustomControlTypeId;class:=NavigationButtonMenu", $treescope_children) Local $oP2=_UIA_getObjectByFindAll($oP3, "Title:=;controltype:=UIA_ListControlTypeId;class:=ListBox", $treescope_children) Local $oP1=_UIA_getObjectByFindAll($oP2, "Title:=Milliman.LTS.UI.Core.Navigation.SimpleNavigationButton;controltype:=UIA_ListItemControlTypeId;class:=ListBoxItem", $treescope_children) Local $oP0=_UIA_getObjectByFindAll($oP1, "Title:=;controltype:=UIA_ButtonControlTypeId;class:=Button", $treescope_children) ;~ First find the object in the parent before you can do something ;~$oUIElement=_UIA_getObjectByFindAll("Setu_p.mainwindow", "title:=Setu_p;ControlType:=UIA_TextControlTypeId", $treescope_subtree) Local $oUIElement=_UIA_getObjectByFindAll($oP0, "title:=Setu_p;ControlType:=UIA_TextControlTypeId", $treescope_subtree) ;~_UIA_action($oUIElement,"highlight") _UIA_action($oUIElement,"click") *** Detailed properties of the highlighted element *** UIA_title:= <Setu_p> UIA_text:= <Setu_p> UIA_regexptitle:= <Setu_p> UIA_class:= <TextBlock> UIA_regexpclass:= <TextBlock> UIA_iaccessiblechildId:= <0> UIA_handle:= <0> UIA_RuntimeId:= <7;10328;61956985> UIA_BoundingRectangle:= <29;174;23;12> UIA_ProcessId:= <10328> UIA_ControlType:= <50020> UIA_LocalizedControlType:= <text> UIA_Name:= <Setu_p> UIA_HasKeyboardFocus:= <False> UIA_IsKeyboardFocusable:= <False> UIA_IsEnabled:= <True> UIA_ClassName:= <TextBlock> UIA_ClickablePoint:= <40;180> UIA_Culture:= <0> UIA_IsControlElement:= <True> UIA_IsContentElement:= <True> UIA_IsPassword:= <False> UIA_NativeWindowHandle:= <0> UIA_IsOffscreen:= <False> UIA_Orientation:= <0> UIA_FrameworkId:= <WPF> UIA_IsRequiredForForm:= <False> UIA_IsDockPatternAvailable:= <False> UIA_IsExpandCollapsePatternAvailable:= <False> UIA_IsGridItemPatternAvailable:= <False> UIA_IsGridPatternAvailable:= <False> UIA_IsInvokePatternAvailable:= <False> UIA_IsMultipleViewPatternAvailable:= <False> UIA_IsRangeValuePatternAvailable:= <False> UIA_IsScrollPatternAvailable:= <False> UIA_IsScrollItemPatternAvailable:= <False> UIA_IsSelectionItemPatternAvailable:= <False> UIA_IsSelectionPatternAvailable:= <False> UIA_IsTablePatternAvailable:= <False> UIA_IsTableItemPatternAvailable:= <False> UIA_IsTextPatternAvailable:= <False> UIA_IsTogglePatternAvailable:= <False> UIA_IsTransformPatternAvailable:= <False> UIA_IsValuePatternAvailable:= <False> UIA_IsWindowPatternAvailable:= <False> UIA_ValueIsReadOnly:= <True> UIA_RangeValueValue:= <0> UIA_RangeValueIsReadOnly:= <True> UIA_RangeValueMinimum:= <0> UIA_RangeValueMaximum:= <0> UIA_RangeValueLargeChange:= <0> UIA_RangeValueSmallChange:= <0> UIA_ScrollHorizontalScrollPercent:= <0> UIA_ScrollHorizontalViewSize:= <100> UIA_ScrollVerticalScrollPercent:= <0> UIA_ScrollVerticalViewSize:= <100> UIA_ScrollHorizontallyScrollable:= <False> UIA_ScrollVerticallyScrollable:= <False> UIA_SelectionCanSelectMultiple:= <False> UIA_SelectionIsSelectionRequired:= <False> UIA_GridRowCount:= <0> UIA_GridColumnCount:= <0> UIA_GridItemRow:= <0> UIA_GridItemColumn:= <0> UIA_GridItemRowSpan:= <1> UIA_GridItemColumnSpan:= <1> UIA_DockDockPosition:= <5> UIA_ExpandCollapseExpandCollapseState:= <3> UIA_MultipleViewCurrentView:= <0> UIA_WindowCanMaximize:= <False> UIA_WindowCanMinimize:= <False> UIA_WindowWindowVisualState:= <0> UIA_WindowWindowInteractionState:= <0> UIA_WindowIsModal:= <False> UIA_WindowIsTopmost:= <False> UIA_SelectionItemIsSelected:= <False> UIA_TableRowOrColumnMajor:= <2> UIA_ToggleToggleState:= <2> UIA_TransformCanMove:= <False> UIA_TransformCanResize:= <False> UIA_TransformCanRotate:= <False> UIA_IsLegacyIAccessiblePatternAvailable:= <True> UIA_LegacyIAccessibleChildId:= <0> UIA_LegacyIAccessibleName:= <Setu_p> UIA_LegacyIAccessibleRole:= <41> UIA_LegacyIAccessibleState:= <0> UIA_IsDataValidForForm:= <False> UIA_ProviderDescription:= <[pid:10328,hwnd:0x0 Main(parent link):Unidentified Provider (managed:MS.Internal.Automation.ElementProxy, PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)]> UIA_IsItemContainerPatternAvailable:= <False> UIA_IsVirtualizedItemPatternAvailable:= <False> UIA_IsSynchronizedInputPatternAvailable:= <True> Thanks for creating the UIA scripts, its helped me do what people in my office said was impossible. Link to comment Share on other sites More sharing options...
mhumpher Posted March 23, 2017 Author Share Posted March 23, 2017 It looks like just using the ObjCreateInterface causes AutoIT to crash after the script has completed. I'm using Autoit 3.3.14.2 Link to comment Share on other sites More sharing options...
mhumpher Posted March 24, 2017 Author Share Posted March 24, 2017 If I use the global tree walker declared in UIA_Wrapper ($UIA_oTW) then AutoIT doesn't crash and it seems a bit faster too. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now