Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
UIAutomate - автоматизация нестандартных элементов GUI
Firefox перечисляет все вкладки, поэтому объектов может быть много. Попробуйте с одной вкладкой.
Если не получится - сообщите версию Firefox.
Также убедитесь, что Firefox не запущен с правами администратора.
Может быть тогда на примере обычного блокнота ? Скажем, в текстовом поле написано "я люблю манную кашу", ищем вначале текст "манную", найдя элемент интерфейса с данным куском текста, копируем весь текст из элемента, а потом жмем кнопку "Справка" в верхней панели.
#include <UIAutomate.au3>
; окно блокнота
$oNotepad = _UIA_GetElementFromHandle(WinGetHandle("[class:Notepad]"))
; поиск по части текста
$aElements = _UIA_FindAllElements($oNotepad)
For $i = 1 To $aElements[0]
$sText = _UIA_ElementGetPropertyValue($aElements[$i], "Value.Value")
If StringInStr($sText, "манную") Then ExitLoop
Next
ConsoleWrite($sText & @CRLF)
; Если заранее известен тип элемента, то лучше так
$oEdit = _UIA_GetControlTypeElement($oNotepad, "UIA_EditControlTypeId", "манную", "Value.Value:", True)
; получение всего текста
$sText = _UIA_ElementGetPropertyValue($oEdit, "Value.Value")
ConsoleWrite($sText & @CRLF)
; пункт меню "Справка"
$oItem = _UIA_GetControlTypeElement($oNotepad, "UIA_MenuItemControlTypeId", "Справка")
_UIA_ElementMouseClick($oItem)
Пожалуйста, будьте так, любезны, помогите закрыть окно с заголовком "Kaspersky Internet Security", текстом "Срок действия лицензии истекает через 13 дней. Вы можете продлить срок действия лицензии. Если вы уже продлили срок действия лицензии, пожалуйста, активируйте программу сейчас.", кнопкой "Продлить срок действия лицензии", кнопкой "Ввести код активации", в верхнем правом углу активна кнопка "Свернуть", в верхнем правом углу активна кнопка "Закрыть", в верхнем правом углу НЕ активна кнопка "Развернуть"
Отчёты утилит Inspect_W7.exe и Inspect_W10.exe прилагаю
Я так понимаю, что изменить заголовок вкладки никак нельзя при помощи UIAutomate? Value.value есть, заголовок легко считывается при помощи _UIA_GetControlTypeElement и _UIA_ElementGetPropertyValue($oElement, "Value.Value"), но вот свой поставить - никак. Перепробовал уже сотни раз. Стоит защита? Хотя функция _UIA_ElementTextSetValue вроде как возвращает успех.
Сообщение автоматически объединено:
Заголовок вкладки к сожалению поменять нельзя. Убил пару часов на поиск id, но в конце концов перебрав все, решил просто везде установить текст где только можно... и да - заголовок вкладки Chrome не меняется (но при этом легко считывается).
Код:
#include "UIAutomate.au3"
Opt("WinTitleMatchMode", 2)
Sleep(1000)
;Chrome должен быть запущен с ключем --force-renderer-accessibility
;Run("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" & " --force-renderer-accessibility")
$hWnd = WinGetHandle('[ACTIVE]') ;активный - Хром
$oParent = _UIA_GetElementFromHandle($hWnd)
;обычный режим перебора элементов
;(глобально проверяем вообще можно ли менять заголовок, по id вкладки ничего не меняется вообще)
$aElements = _UIA_FindAllElements($oParent)
For $i = 1 To $aElements[0]
_UIA_ElementTextSetValue($aElements[$i], "New text (title) for Google Chrome")
ConsoleWrite( _UIA_ElementGetPropertyValue($aElements[$i], "Value.Value") & @CRLF)
Next
;расширенный режим перебора элементов
$aElements = _UIA_FindAllElementsEx($oParent)
For $i = 1 To $aElements[0]
_UIA_ElementTextSetValue($aElements[$i], "New text (title) for Google Chrome")
ConsoleWrite( _UIA_ElementGetPropertyValue($aElements[$i], "Value.Value") & @CRLF)
Next
Сообщение автоматически объединено:
Библиотека супер!!! Подскажите пожалуйста, может ли работать _UIA_ElementTextSetValue, когда окно куда нужно ввести данные - неактивно? пока решения не нашел никакого
Сообщение автоматически объединено:
Ответ найден. Работает только с видимыми или НЕ свернутыми окнами. Увы. IUIAutomation с офф форума - тоже самое, хотя эти библиотеки используют одну и туже технологию, чего удивляться)
Добрый день. Подскажите пожалуйста синтаксис к функции UIA_GetControlTypeElement для поиска с ее помощью элемента в браузере по ClassName,
Пробовал разными способами, но по ControlType и name все ищет, но т.к. на странице много одинаковых элементов при таком поиске не получается сфокусироваться на необходимом, что могло бы решить проблему использования параметра элемента ClassName.
Заранее спасибо
ClassName - это свойство, отображаемое в Inspect? Если да, то так.
Тип: кнопка UIA_ButtonControlTypeId, свойство: ClassName, значение свойства: ButtonClassName.
ClassName - это свойство, отображаемое в Inspect? Если да, то так.
Тип: кнопка UIA_ButtonControlTypeId, свойство: ClassName, значение свойства: ButtonClassName.
, вот мне необходимо было поменять по умолчанию установленный параметр в файле UIAutomate где
Код:
$vProperty = Default
на тип свойства ClassName, вопрос решил установкой в коде UIAutomate вместо
Код:
$vProperty = Default -> $vProperty = "ClassName"
в этом случае функция _UIA_GetControlTypeElementNEW в месте где параметр $vProperty по умолчанию "Name" - $UIA_NamePropertyId теперь из инспектора можно ставить параметр ClassName, который в своем роде уникальный для большего количества элементов чем параметр name.
Скажите пожалуйста есть ли инструкция, мануал к UIAutomate ?
Понял, попробую предложенный вами вариант, просто информации очень мало, описание в самой функции очень краткое.
Сообщение автоматически объединено:
Возникла следующая задачи. Подскажите пожалуйста, необходимо реализовать код, чтоб он находил все элементы одного типа, а после я бы смог обратиться к последнему из них, для получения его свойств. Можно путём записи всех элементов в массив, или путем перебора циклом. Может есть какие нибудь примеры ?
Да, ошибки. Первая: ошибка создания объекта массива. Обычно такое случается при большом количестве элементов. Попробуйте сначала найти панель, в которой находится этот Edit. Потом используйте эту панель в качестве родителя для поиска Edit.