Автоматизация браузеров обсуждается здесь:Как узнать на каком месте в выдаче Yandex находится сайт
Автоматизация IE и Web-интерфейса
Решение вопросов по автоматизации Internet Explorer и прочего Web-интерфейса
autoit-script.ru
Автоматизация браузеров обсуждается здесь:Как узнать на каком месте в выдаче Yandex находится сайт
If _ElementGetPropertyValue($aAllElements[$i], "LocalizedControlType") = "сложная библиотека" then
что бы условие было верно, даже если ввести только "сложная"
If StringInStr(_UIA_ElementGetPropertyValue($aAllElements[$i], "LocalizedControlType"), "сложная") Then
Работает! Спасибо огромное InnIКод:If StringInStr(_UIA_ElementGetPropertyValue($aAllElements[$i], "LocalizedControlType"), "сложная") Then
Для поиска в массиве элементов есть функции _UIA_FindElementsInArray и _UIA_ElementFindInArray с поддержкой частичного совпадения значения свойства (параметр $fInStr)
Global $open_link = "https://auto.keyauto.ru/used/toyota/new_lc200"
$all = _UIA_FindAllElements($oParent)
For $i = 1 to $all[0]
If _UIA_ElementGetPropertyValue($All[$i], "Value.Value") = $open_link Then
_UIA_ElementScrollIntoView($All[$i])
sleep (1000) ; Все что пришло в голову :(
_UIA_ElementMouseClick($All[$i], "left", Default, Default, 1, FALSE)
ExitLoop
EndIf
Next
Проанализировать @error. Если 1, то это не элемент. Если 2, то элемент не поддерживает прокрутку. Если 3, то возникли проблемы (какие - неизвестно). Если 0, то хотя бы часть элемента в зоне видимости.Как понять, что функция _UIA_ElementScrollIntoView($All[$i]) проскроллила страницу до зоны видимости элемента " $All[$i] " ?
Проверить свойство элемента IsOffscreen. Но элемент будет виден даже если видна только его часть.Как сделать проверку на то, что элемент " $All[$i] " в данный момент в зоне видимости?
Chrome нужно запускать с параметром --force-renderer-accessibilityне видит содержимое окна браузера гугл хром
не помоглоChrome нужно запускать с параметром --force-renderer-accessibility
$All = _UIA_FindAllElements($oParent)
For $i = 1 to $All[0]
If _UIA_ElementGetPropertyValue($All[$i], "LocalizedControlType") = "ссылка" then
_UIA_ElementMouseMOVE($All[$i], 'left', Default, Default, 1, True)
EndIf
Next
UDF не содержит такой функции. Следовательно, я не знаю что она делает._UIA_ElementMouseMOVE
Local $arr[0]
$All = _UIA_FindAllElements($oParent)
For $i = 1 to $All[0]
If _UIA_ElementGetPropertyValue($All[$i], "LocalizedControlType") = "ссылка" then
$Value = _UIA_ElementGetPropertyValue($All[$i], "Value.Value")
_Arrayadd($arr,$Value)
Endif
Next
_ArrayDisplay($arr)
Никак. Эта функция сделана именно для клика._UIA_ElementMouseClick - если этой функцией можно просто навести курсор и не нажимать, то как это сделать?
Потому что в качестве $oParent вы используете главное окно. Посмотрите в дереве Inspect - содержимое страницы там будет два раза - в разных ветвях. Поэтому нужно искать от элемента, который отображает страницу$All = _UIA_FindAllElements($oParent) - даже сюда все элементы заносятся 2 раза
#include "UIAutomate.au3"
#include <Array.au3>
$hPage = ControlGetHandle("[RegexpTitle: - Google Chrome]", "", "Chrome_RenderWidgetHostHWND1")
$oParent = _UIA_GetElementFromHandle($hPage)
Local $arr[0]
$All = _UIA_FindAllElements($oParent, "ControlType", $UIA_HyperlinkControlTypeId) ; так проще искать ссылки
For $i = 1 To $All[0]
_Arrayadd($arr, _UIA_ElementGetPropertyValue($All[$i], "Value.Value"))
; _UIA_ElementDoDefaultAction($All[$i]) ; "клик" по ссылке
Next
_ArrayDisplay($arr)
А Inspect видит?Au3Info.exe не видит
Вот что удалось получить с помощью inspect в режиме UI AutomationА Inspect видит?
hwnd=0x000202D4 64bit class="Afx:00007FF6A76D0000:b:0000000000010003:0000000000000006:0000000000000000" style=0x52800000 ex=0x0ControlType: UIA_ImageControlTypeId (0xC356)
LocalizedControlType: "рисунок"
BoundingRectangle: {l:344 t:188 r:360 b:204}
IsEnabled: true
IsOffscreen: false
HasKeyboardFocus: false
ProcessId: 9716
RuntimeId: [2A.202D4.4.D1]
ClassName: "item-icon"
IsControlElement: true
IsContentElement: true
ProviderDescription: "[pid:9716,providerId:0x0 Main(parent link):Unidentified Provider (unmanaged:sciter.dll)]"
LegacyIAccessible.ChildId: 209
LegacyIAccessible.DefaultAction: ""
LegacyIAccessible.Description: ""
LegacyIAccessible.Help: ""
LegacyIAccessible.KeyboardShortcut: ""
LegacyIAccessible.Name: ""
LegacyIAccessible.Role: графика (0x28)
LegacyIAccessible.State: обычный (0x0)
LegacyIAccessible.Value: "this://app/TlsClientGui/icons/CertSettings.svg"
IsAnnotationPatternAvailable: false
IsDragPatternAvailable: false
IsDockPatternAvailable: false
IsDropTargetPatternAvailable: false
IsExpandCollapsePatternAvailable: false
IsGridItemPatternAvailable: false
IsGridPatternAvailable: false
IsInvokePatternAvailable: false
IsItemContainerPatternAvailable: false
IsLegacyIAccessiblePatternAvailable: true
IsMultipleViewPatternAvailable: false
IsObjectModelPatternAvailable: false
IsRangeValuePatternAvailable: false
IsScrollItemPatternAvailable: false
IsScrollPatternAvailable: false
IsSelectionItemPatternAvailable: false
IsSelectionPatternAvailable: false
IsSpreadsheetItemPatternAvailable: false
IsSpreadsheetPatternAvailable: false
IsStylesPatternAvailable: false
IsSynchronizedInputPatternAvailable: false
IsTableItemPatternAvailable: false
IsTablePatternAvailable: false
IsTextChildPatternAvailable: false
IsTextEditPatternAvailable: false
IsTextPatternAvailable: false
IsTextPattern2Available: false
IsTogglePatternAvailable: false
IsTransformPatternAvailable: false
IsTransform2PatternAvailable: false
IsValuePatternAvailable: false
IsVirtualizedItemPatternAvailable: false
IsWindowPatternAvailable: false
IsCustomNavigationPatternAvailable: false
FirstChild: [null]
LastChild: [null]
Next: [null]
Previous: [null]
How found: Mouse move (386,185)
hwnd=0x000202D4 64bit class="Afx:00007FF6A76D0000:b:0000000000010003:0000000000000006:0000000000000000" style=0x52800000 ex=0x0Name: "Создать запрос"
ControlType: UIA_TextControlTypeId (0xC364)
LocalizedControlType: "текстовый"
BoundingRectangle: {l:343 t:177 r:435 b:202}
IsEnabled: true
IsOffscreen: false
HasKeyboardFocus: false
ProcessId: 9716
RuntimeId: [2A.202D4.4.1F3E]
ClassName: "item-name"
IsControlElement: true
IsContentElement: true
ProviderDescription: "[pid:9716,providerId:0x0 Main(parent link):Unidentified Provider (unmanaged:sciter.dll)]"
LegacyIAccessible.ChildId: 7998
LegacyIAccessible.DefaultAction: ""
LegacyIAccessible.Description: ""
LegacyIAccessible.Help: ""
LegacyIAccessible.KeyboardShortcut: ""
LegacyIAccessible.Name: ""
LegacyIAccessible.Role: текст (0x29)
LegacyIAccessible.State: обычный (0x0)
LegacyIAccessible.Value: ""
IsAnnotationPatternAvailable: false
IsDragPatternAvailable: false
IsDockPatternAvailable: false
IsDropTargetPatternAvailable: false
IsExpandCollapsePatternAvailable: false
IsGridItemPatternAvailable: false
IsGridPatternAvailable: false
IsInvokePatternAvailable: false
IsItemContainerPatternAvailable: false
IsLegacyIAccessiblePatternAvailable: true
IsMultipleViewPatternAvailable: false
IsObjectModelPatternAvailable: false
IsRangeValuePatternAvailable: false
IsScrollItemPatternAvailable: false
IsScrollPatternAvailable: false
IsSelectionItemPatternAvailable: false
IsSelectionPatternAvailable: false
IsSpreadsheetItemPatternAvailable: false
IsSpreadsheetPatternAvailable: false
IsStylesPatternAvailable: false
IsSynchronizedInputPatternAvailable: false
IsTableItemPatternAvailable: false
IsTablePatternAvailable: false
IsTextChildPatternAvailable: false
IsTextEditPatternAvailable: false
IsTextPatternAvailable: false
IsTextPattern2Available: false
IsTogglePatternAvailable: false
IsTransformPatternAvailable: false
IsTransform2PatternAvailable: false
IsValuePatternAvailable: false
IsVirtualizedItemPatternAvailable: false
IsWindowPatternAvailable: false
IsCustomNavigationPatternAvailable: false
FirstChild: [null]
LastChild: [null]
Next: [null]
Previous: "" рисунок
Other Props: Object has no additional properties
Func MainForm()
; Create UI Automation object
Local $oUIAutomation = ObjCreateInterface( $sCLSID_CUIAutomation, $sIID_IUIAutomation, $dtag_IUIAutomation )
If Not IsObj( $oUIAutomation ) Then Return ConsoleWrite( "$oUIAutomation ERR" & @CRLF )
Local $pDesktop, $oDesktop
$oUIAutomation.GetRootElement( $pDesktop )
$oDesktop = ObjCreateInterface( $pDesktop, $sIID_IUIAutomationElement, $dtag_IUIAutomationElement )
If Not IsObj( $oDesktop ) Then Return ConsoleWrite( "$oDesktop ERR" & @CRLF )
; --- Find window/control ---
Local $pCondition0
$oUIAutomation.CreatePropertyCondition( $UIA_NamePropertyId, "Континент TLS-клиент", $pCondition0 )
If Not $pCondition0 Then Return ConsoleWrite( "$pCondition0 ERR" & @CRLF )
Local $pWindow1, $oWindow1
$oDesktop.FindFirst( $TreeScope_Children, $pCondition0, $pWindow1 )
$oWindow1 = ObjCreateInterface( $pWindow1, $sIID_IUIAutomationElement, $dtag_IUIAutomationElement )
If Not IsObj( $oWindow1 ) Then Return ConsoleWrite( "$oWindow1 ERR" & @CRLF )
; --- найти кнопку Управление сертификатами
Local $pCondition1
$oUIAutomation.CreatePropertyCondition( $UIA_NamePropertyId, "Управление сертификатами", $pCondition1 )
If Not $pCondition1 Then Return ConsoleWrite( "$pCondition1 ERR" & @CRLF )
Local $pText1, $oText1
$oWindow1.FindFirst( $TreeScope_Descendants, $pCondition1, $pText1 )
$oText1 = ObjCreateInterface( $pText1, $sIID_IUIAutomationElement, $dtag_IUIAutomationElement )
If Not IsObj( $oText1 ) Then Return ConsoleWrite( "$oText1 ERR" & @CRLF )
UIA_MouseClick( $oText1 )
Sleep(100)
; --- найти кнопку Создать запрос
Local $pCondition1
$oUIAutomation.CreatePropertyCondition( $UIA_NamePropertyId, "Создать запрос", $pCondition1 )
If Not $pCondition1 Then Return ConsoleWrite( "$pCondition1 ERR" & @CRLF )
Local $pText1, $oText1
$oWindow1.FindFirst( $TreeScope_Descendants, $pCondition1, $pText1 )
$oText1 = ObjCreateInterface( $pText1, $sIID_IUIAutomationElement, $dtag_IUIAutomationElement )
If Not IsObj( $oText1 ) Then Return ConsoleWrite( "$oText1 ERR" & @CRLF )
UIA_MouseClick( $oText1 )
EndFunc