Что нового

Как узнать что на странице Chrome что-то нашлось после Cntrk+f

dr.room

Новичок
Сообщения
283
Репутация
0
Всем привет
Ищу на странице Chrome, используя Cntrl+f. Добавляю текст в поле ввода - для поиска. Как можно узнать с помощью Autoit - что поиском что-то найдено т.е. не 0/0
Спасибо

Дополнено
Упустил из виду. Если напротив - ничего не нашлось: тоже вариант. получить бы и об этом сообщение от Autoit
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
Код:
#include "UIAutomate.au3"		;    http://autoit-script.ru/index.php?topic=16780.0

$hWnd = WinActivate("[REGEXPTITLE:.*Google Chrome]")
if @error Then Exit MsgBox(4096, "Ошибка", "Окно не найдено")

$oParent = _UIA_GetElementFromHandle($hWnd)

$oElement = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "Найти")
If @error Then Exit MsgBox(4096, "Ошибка", "Строка поиска не отображается")
$oElement = _UIA_ElementGetPreviousNext($oElement)[1]

While 1

   $sValue = _UIA_ElementGetPropertyValue($oElement, "Name")
   If $sValue <> "0/0" Then 
	  MsgBox(4096, "", $sValue)
   EndIf
   Sleep(200)
   
WEnd
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Фантастика! Спасибо!
Мне пару моментов только не понятны, если можно, уточните что означают:
[list type=decimal]
[*]REGEXPTITLE
[*][1]
[*]"Name"
[/list]
Спасибо!
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
:smile:
Код:
WinActivate("[REGEXPTITLE:.*Google Chrome]")  ; Активирует окно, в названии которого есть строка "Google Chrome"
_UIA_ElementGetPreviousNext($oElement)[1]    ;  Эта функция возвращает массив, в котором первый элемент - предыдущий от указанного, а второй - следующий за указанным элементом. Поскольку нам нужен следующий элемент, мы обращаемся сразу ко второму элементу массива, возвращенного функцией
_UIA_ElementGetPropertyValue($oElement, "Name")  ; Возвращает свойство Name указанного элемента. В данном случае, в свойстве Name хранится нужная нам строка
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Здравствуйте!
Кажется я начинаю что-то понимать. Спасибо
Я попробовал проанализировать, вот что вышло:
Код:
$oElement = _UIA_ElementGetPreviousNext($oElement)[1]

Определяет соседний элемент, от текущего: того-же уровня. но следующего за ним т.е. расположенного физически за ним
Но что указывает на то что это элементы общего уровня? Возможно учитывается уровень по оси Z ?
Код:
$sValue = _UIA_ElementGetPropertyValue($oElement, "Name")

Параметр Name это некий универсальный ключ, применяющейся если свойство объекта не указывается точно? Возможно - свойство не известно. Зато Name позволяет преобразовать Autoit-ом свойство в id. А раз так - id будет известно Autoit
Но если так, вовсе не обязательно указывать в коде само значение: я проверил - скрипт работает!
Код:
; до 
   If $sValue <> "0/0" Then
; после 
   If $sValue <> "" Then

И поставит ExitLoop после MsgBox - иначе окно ни в жизнь не закроется :smile:

PS
Если что не так- заранее извиняюсь я не фокусник - я только учусь не программист :smile:
 
Верх