Как вариантПринцип понятен.
#include <UIAutomate.au3>
$oPage = _UIA_GetElementFromHandle(ControlGetHandle("AutoIt — Википедия - Google Chrome", "", "Chrome_RenderWidgetHostHWND1"))
$aText = _UIA_FindAllElements($oPage, "ControlType", $UIA_TextControlTypeId)
$aFrom = _UIA_FindElementsInArray($aText, "Name", "Класс языка", False, True)
$aTo = _UIA_FindElementsInArray($aText, "Name", "Повлиял на" , False, True)
For $i = $aFrom[1] + 1 To $aTo[1] - 1
ConsoleWrite(_UIA_ElementGetPropertyValue($aText[$i], "Name") & @CRLF)
Next
Элемент Edit не поддерживает шаблоны работы с текстом. Всё, что можно от него получить - это весь текст и положение скролла. Количество строк, положение каретки, наличие выделения Edit не возвращает. Без "костылей" не обойтись.$UIA_EditControlTypeId
#include <UIAutomate.au3>
Run("notepad.exe")
$hWnd = WinWaitActive("[class:Notepad]")
WinMove($hWnd, "", 50, 50, 400, 300)
$hEdit = ControlGetHandle($hWnd, "", "Edit1")
For $i = 1 To 9
ControlSend($hWnd, "", $hEdit, $i & @CR)
Next
$X = 80
$Y = 60
$oEdit = _UIA_GetElementFromHandle($hEdit)
_UIA_ElementMouseClick($oEdit, "", $X, $Y, 2)
Sleep(1111)
ControlSend($hWnd, "", $hEdit, "^{home}")
Sleep(1111)
WinMove($hWnd, "", 50, 300)
_UIA_ElementMouseClick($oEdit, "", $X, $Y, 2)
#include "UIAutomate.au3"
Opt("WinTitleMatchMode", 2)
sleep(1000)
WinActivate("Mozilla Firefox")
sleep(5)
$hWnd = WinWait("Mozilla Firefox")
$oParent = _UIA_GetElementFromHandle($hWnd)
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "Адресная строка и строка поиска")
$URL = _UIA_ElementGetPropertyValue($oElement, "Value.Value")
MsgBox(0, "URL", $URL)
Запустите скрипт из SciTE по F5 и посмотрите в консоле ошибки.почему этот код не считывает ссылку
две ошибкиЗапустите скрипт из SciTE по F5 и посмотрите в консоле ошибки.
Для начала найдите на форуме способ исправить вывод кириллицы в консоль SciTE.Вы можете подсказать как устранить эти ошибки?
И не надейтесь. Это совершенно разные браузеры. Большинство примеров на этом форуме для хром нужно переделывать под лису.код изначально был сделан под хром, я только изменил титл с хрома на лису, в надежде что всё остальное должно подойти.
А он и не нужен. Достаточно утилиты в архиве с UDF.У меня нет SDK inspect
Верно. В данном случае имя панели адреса будет другим. У меня, например, работает такесть подозрение что не подходит какойто параметр
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "Найдите в Яндекс или введите адрес")
Спасибо!А он и не нужен. Достаточно утилиты в архиве с UDF.
#include "UIAutomate.au3"
Opt("WinTitleMatchMode", 2)
sleep(1000)
WinActivate("Mozilla Firefox")
sleep(5)
$hWnd = WinWait("Mozilla Firefox") ; копирует ссылку из адресной строки лисы
$oParent = _UIA_GetElementFromHandle($hWnd)
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "Найдите в Google или введите адрес")
$URL = _UIA_ElementGetPropertyValue($oElement, "Value.Value")
MsgBox(0, "URL", $URL)
Верно. Они были и есть. Особенно при поиске массивов элементов.Так что проблема именно с лисой
#include "UIAutomate.au3"
$oParent = _UIA_GetElementFromHandle(WinWait("[RegexpTitle:.*Mozilla Firefox]"))
$oTypeCond = _UIA_CreatePropertyCondition("ControlType", $UIA_EditControlTypeId)
$oNameCond = _UIA_CreatePropertyCondition("Name", "Найдите в Google или введите адрес")
$oLogicCond = _UIA_CreateLogicalCondition($oTypeCond, "AND", $oNameCond)
$oElement = _UIA_GetElementFromCondition($oParent, $oLogicCond)
If IsObj($oElement) Then
$URL = _UIA_ElementGetPropertyValue($oElement, "Value.Value")
ConsoleWrite($URL & @CRLF)
Else
ConsoleWrite("Элемент не найден" & @CRLF)
EndIf
Возможно, из-за некорректной реализации метода FindAll интерфейса IUIAutomation.Из-за чего такое может быть?
Спасибо!Текст строки адреса можно получить так
Код работает, но возник вопрос - с некоторых сайтов адрес возвращается не полностью, без приставки:Текст строки адреса можно получить так
about:configполучить полный адрес ссылки из адресной строки
WinActivate("[RegexpTitle:.*Mozilla Firefox]")
Send("{F6}^{ins}{F6}")
Sleep(111)
$URL = ClipGet()
ConsoleWrite($URL & @CRLF)
Спасибо, сделал по другому - если нет протокола направляю полуссылку в скрытый браузер IE и получаю обратно через .LocationURLИли так
А для других браузеров случайно не подскажите где изменить подобную настройку?about:config
browser.urlbar.trimURLs = false
IE всегда показывает. Для хромадля других браузеров