Что нового

Анализ содержимого строки консоли браузера

Anna

Новичок
Сообщения
119
Репутация
2
Здравствуйте.
Подскажите, пожалуйста, как сделать проверку:- если в консоли браузера последняя строка содержит”lalala” то вызвать функцию, иначе ждать. Строка обновляется через произвольный промежуток времени.
Код:
maxWait = 12000,
var wait = Math.floor(Math.random() * maxWait ) + 100;
Можно ли сделать универсально, для браузеров “ Mozilla Firefox” и”Chrome”?
Код:
If TimerDiff($Time_Start) > ($Time_A * 60 * 1000) Then
	   ;Здесь проверить содержит строка”lala”
      _test_func()
      $Time_Start = TimerInit()
    EndIf
 
Автор
A

Anna

Новичок
Сообщения
119
Репутация
2
InnI

Для “ Mozilla Firefox”
На снимке отметила.
 

Вложения

  • консоль.JPG
    консоль.JPG
    76.1 КБ · Просмотры: 16

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Anna
Для “ Mozilla Firefox”
Структура консоли довольно сложная и на каждом сайте разная. Не придумал ничего лучше, чем привязаться к ширине "ячейки" с текстом (не менее 2/3 ширины окна). Проверил на десятке разных сайтов. Пробуйте
Код:
#include <UIAutomate.au3> ; http://autoit-script.ru/index.php/topic,16780.0.html

ConsoleWrite(GetLineText() & @CRLF)

Func GetLineText()
  Local $hWnd, $aPos, $oWindow, $aCons, $oDoc, $aEdits, $aBound
  $hWnd = WinGetHandle("[regexptitle:.*Mozilla Firefox]")
  $aPos = WinGetPos($hWnd)
  $oWindow = _UIA_GetElementFromHandle($hWnd)
  $aCons = _UIA_FindAllElements($oWindow, "Name", "Панель консоли")
  If @error Then Return SetError(1, 0, "")
  $oDoc = _UIA_GetControlTypeElement($aCons[$aCons[0]], $UIA_DocumentControlTypeId, "")
  $aEdits = _UIA_FindAllElements($oDoc, "ControlType", $UIA_EditControlTypeId)
  If @error Then Return SetError(2, 0, "")
  For $i = $aEdits[0] To 1 Step -1
    $aBound = _UIA_ElementGetBoundingRectangle(_UIA_ElementGetParent($aEdits[$i]))
    If @error Then ContinueLoop
    If $aBound[2] - $aBound[0] > $aPos[2] * 2 / 3 Then Return _UIA_ElementGetPropertyValue($aEdits[$i], "Name")
  Next
  Return SetError(3, 0, "")
EndFunc
 
Автор
A

Anna

Новичок
Сообщения
119
Репутация
2
InnI
Извините, не поняла, как эту проверку сделать в том месте, где в коде запись “ ;Здесь проверить содержит строка”lala””


Опишу подробнее.
Запускаю скрипт JS в консоли.
В зависимости от событий на сайте, скрипт выводит в лог сообщения, типа “хорошо” или “плохо”. Задача, когда в строке есть “хорошо” запустить функцию _test_func()
которая запускается по времени. Всё условие должно быть таким:
если пришло время (это уже реализовано)
и
в последней строке есть слово “хорошо”
то
вызвать функцию _test_func()
иначе,
ждать
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
If TimerDiff($Time_Start) > ($Time_A * 60 * 1000) Then
  If StringInStr(GetLineText(), "хорошо") Then _test_func()
  $Time_Start = TimerInit()
EndIf
Вспомнил, что вы как-то писали "Операционная система Windows XP" (Ответ #7). Если так, то функция GetLineText() работать не будет.
 
Автор
A

Anna

Новичок
Сообщения
119
Репутация
2
Отличная у вас память, InnI :smile:.
Можно что-либо придумать для “Windows XP"?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Попробуйте найти обновление для Windows XP (KB971513), которое установит интерфейс UIAutomation. Больше ничего предложить не могу.
 
Верх