Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Архипчик on July 08, 2015, 12:41:15 PM
-
Приветствую всех. Пишу впервые :)
Вопрос такой: есть страница(браузер не суть важен, но для примера Яндекс), на странице есть один элемент с картинкой под флэш-плеер, но интерес для анализа представляет текст(картинка) на странице в виде столбца таблички. Так вот, по клику на неких ссылках меняется только одна область, этот столбец, причём элементы там могут быть в разном количестве, а могут и вовсе не появиться, что нормально. Проблема не в самом анализе, тут трудностей нет, а в минимизации времени задержки после клика по ссылке и началом анализа: при явно указанной, и достаточно продолжительной паузе, все корректно. При попытках ввести таймер на опрос вновь ИЗМЕНИВШИХСЯ каких либо элементов выясняется, что таковых элементов то и нет: именно меняющиеся и подлежат анализу, а все остальное строго статично...
Можно как то обратиться к свойствам окна эксплорера, для примера свойство readyState или что то подобное?..
Ну или какую другую реальную идею кто покинет?
Спасибо!
-
Нашёл совет вот тут: http://crapware.aidf.org/forum/index.php?topic=1566.0 (http://crapware.aidf.org/forum/index.php?topic=1566.0), т.е. на панели браузера анализирую часть изображения. Сначала на факт процесса загрузки, потом на факт окончания. Ограничение поставил в 2 сек. Были ошибки. Увеличил до 3 - ошибки пропали. Если печатать в лог из тела цикла - получается одна итерация, причём всегда. Но с разными интервалами: 1-3 сек. Видно, исполнение команд влияет :D
В общем и целом: работает!
ЗЫ все равно от хороших советов не откажусь...
-
Продолжу разговор сам собой... ::)
Итак, рано радовался: увеличение времени обработки ожидания обновления страницы (во завернул!), он же цикл на время, действительно избавляет от ошибок при обновлении страниц. Потому что это равнозначно указать паузу на ожидание ровно на эту величину, указанную в цикле. Заметил сей факт из-за сильного падения скорости работы скрипта. Полез трассировать и выяснил: при нажатии на ССЫЛКУ, причём любую, алгоритм работает, если проходит команда через клавиатуру - 100% не срабатывает! Избавиться от использования эмуляции клавы - не вариант...
Увы, пока у меня идей больше нет...
ЗЫ Попытки ориентироваться на различные части графики на странице при их прорисовке также закончились крахом.
-
Тяжело понять в чём затык без примеров кода и того что анализируем.
Просто непонятно, почему не подошло искать значёк "обновления страницы".
По ссылке таймер немного неудобный.
SUB(ожидание_загрузки)
$check = 0
$time = $_ms + 10000 // обновление через 10 сек
WHILE($check = 0)
IF($time > $_ms)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "reloadicon.bmp")
$check = 1
END_IF
WAITMS(50)
ELSE
KEYPRESS(#F5)
WAITMS(500)
$time = $_ms + 10000 // обновление через 10 сек
END_IF
END_CYC
END_SUB
-
Приведённый вами алгоритм я и использую. Затык именно в посылке команды F5(или я иногда пользую BACKSPACE): та самая часть reloadicon.bmp в браузере не отлавливается. Если нажать на странице на любую ссылку - алгоритм прекрасно работает, и bmp-шник прекрасно находится...
Спсб за ответ!
-
Аааа... Так проблема в фокусе. F5 - команда браузера и она работает только при фокусе на одном из элементов браузера.
Если фокус на элементе флэш (в основном сталкиваются с этим), его нужно перевести, кликнув перед применением KEYPRESS(#F5) на свободном месте страницы или, возможно, по заголовку браузера.
Как вариант...
[spoiler]SUB(ожидание_загрузки, $tr) // обновление через $tr сек
$reloadicon = 0
$timereload = $_ms + $tr*1000
WHILE($reloadicon = 0)
IF(($timereload > $_ms) | ($tr = 0))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "reloadicon.bmp")
$reloadicon = 1
END_IF
WAITMS(50)
ELSE
LCLICK(500,5)
WAITMS(50)
KEYPRESS(#F5)
WAITMS(500)
$timereload = $_ms + $tr*1000
END_IF
END_CYC
END_SUB
[/spoiler]
если переданный параметр будет равен 0 (сек), перезагрузок не будет.
-
От спасибо!!! Кабы знать мне это ранее... И да, флэш присутствует, как же без неё :-) Теперь я практически счастлив! На какое то время :) Потом опять что нить выскочит...