Что нового

Клик по ссылке в коде

Q4eR

Новичок
Сообщения
4
Репутация
0
Версия AutoIt: 3.2.12.1

Описание: Нужен скрипт, который бы выполнял такой алгоритм:
1.Поиск в HTML коде вебстраницы определённой строки и считывание из неё текста из под тега span
2. if текст равен мама, то переход по ссылке http://мама.ру
if текст равен папа, то переход по ссылке http://папа.ру
3.5 сек перерыв и пункты 1 и 2 на повторение, так 8 раз


Примечания:
Примерно представляю алгоритм, т.е:
8 постоянных переменных и одна непостоянная
-цикл по i до 8
-внутри цикла в непостоянную переменную присваивать текст из под span
-сравниваем через if непостоянную с постоянными, если совпадение найдено, то переход по ссылке
Не могу разобраться с поиском в коде, ни _IEGetObjByName, ни _IEGetObjById не помогают
В идеале, чтобы скрипт работал в хроме/файрфоксе

Часть html кода, с которой работаю:
<div class="click">
<div id="key">Please, press <span>2889126 </span></div>
</div>
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Код:
; ******

#include <IE.au3>
$oIE=_IECreate()
$html = '<div class="click">'&@LF& _
		'<div id="key">Please, press <span>2889126 </span></div>'&@LF& _
		'</div>'
_IEBodyWriteHTML($oIE,$html)

; ******

; первый вариант - вытащить отсюда текст с помощью RegExp
$oDiv=_IEGetObjById($oIE,'key')
ConsoleWrite($oDiv.innerhtml&@CRLF)
; вот так:
$sSpan=StringRegExpReplace($oDiv.innerhtml,'.*?<SPAN>(.*?)</SPAN>.*','\1')
ConsoleWrite($sSpan&@CRLF)

; второй вариант
$oDiv=_IEGetObjById($oIE,'key')
$oSpans=_IETagNameGetCollection($oDiv,'span')
For $oSpan In $oSpans
	ConsoleWrite($oSpan.innertext&@CRLF) ; собственно текст
Next
 
Автор
Q

Q4eR

Новичок
Сообщения
4
Репутация
0
Тааак...Спасибо, оба варианта вытаскивания текста чуть позже испробую, есть пара вопросов по первому варианту
Как я понял - это вывод текста из под span в переменную и далее в консоль, так? Но у меня под тегом span идёт рандомное значение из 8 заданных, т.е раз в 15 сек оно меняется на одно из восьми. И в эти 15 сек нужно:
а) открыть цикл
б) вытащить значение
в) если значение $sSpan, то _IENavigate($oIE, "http://мама.ру")
Я правильно мыслю?
Если да, то по какой переменной открывать цикл? Как в втором варианте : For $oSpan In $oSpans ?
 
Автор
Q

Q4eR

Новичок
Сообщения
4
Репутация
0
Запутался я с циклом
Не могу сообразить где его начать и не могу понять как переменную сравнить с текстом...
Точнее текст в переменной сравнить с текстом
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Q4eR
начать можно после открытия сайта и его полной загрузки

Код:
; наверное вначале нужно заполнить массив для поиска

Dim $Array[9]=[8,'текст1','текст2',...]

For $i=1 To $Array[0]

If StringInStr($text,$Array[$i]) Then ...
; или
If StringRegExp($text,$Array[$i]) Then ...

Next
 
Верх