Что нового

[Автоматизация] Какие функции из класса <IE> нужно использовать??

Anb1s

Новичок
Сообщения
4
Репутация
0
Нужно чтобы скрин заходил в браузер открывал поисковик ,в моём случае yandex.ru, и выдавал запрос.Это у меня получилось. Так же я написал чтобы заходил на два сайта с первой страницы поиска.
Вопрос:какую функцию нужно использовать чтобы он заходил не на конкретные два адреса,которые я указал в программе, а в первый запуск,к примеру на 1-ый и 4-ый сайт на странице,в следующий запуск на 5-ый и 7-ой сайт, т.е. каждый раз на разные-рандомом?

Код:
AutoIt #include <IE.au3>

$sSearch = 'привет  ' ; что ищем
Sleep (3000)

$oIE1 = _IECreate (' http://yandex.ru ') ;
$oForm = _IEFormGetCollection($oIE1, 0 ) ;
$oSearch = _IEFormElementGetObjByName($oForm, 'text') ;
_IEFormElementSetValue($oSearch, $sSearch) ;
_IEFormSubmit ($oForm , 0) ; запрос
_IELoadWait($oIE1); ждём-с
Sleep (3000) ; спим

$oIE2 =  _IEcreate ('http://www.dic.academic.ru') ; нужно чтобы посещал не именно вот эти сайты,а самостоятельно выбирал
Sleep (5000)
_IEQuit ($oIE2)
Sleep (5000)
$oIE3 =  _IEcreate ('http://kinopoisk.ru›Привет') ;
Sleep (5000)
_IEQuit ($oIE3)
Sleep (5000)
_IEQuit ($oIE1)
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Anb1s
Можно как-то так:
Код:
#include <IE.au3>
#include <Array.au3>

$sSearch = 'привет  ' ; что ищем
;Sleep(3000)

$oIE1 = _IECreate(' http://yandex.ru ') ;
$oForm = _IEFormGetCollection($oIE1, 0) ;
$oSearch = _IEFormElementGetObjByName($oForm, 'text') ;
_IEFormElementSetValue($oSearch, $sSearch) ;
_IEFormSubmit($oForm, 0) ; запрос
_IELoadWait($oIE1); ждём-с
;Sleep(3000) ; спим

$oLinks = _IELinkGetCollection ($oIE1)
$iNumLinks = @extended
Dim $aString[1]
For $oLink In $oLinks
   If Not StringInStr($oLink.href, 'yandex') And  StringRight($oLink.href, 1) <> '/' Then _ArrayAdd($aString,$oLink.href)
Next
$aString=_ArrayUnique($aString)

;_ArrayDisplay($aString)

While 1
	$index = Random(2, UBound($aString) - 3);
		$oIE2 = _IEcreate($aString[$index])
		$oIE3 = _IEcreate($aString[$index+2])
		Sleep(5000)
		_IEQuit($oIE2)
		_IEQuit($oIE3)	
	Sleep(3000)
WEnd


Или можно другой вариант случайного перебора, используя _ArrayCombinations:
Код:
#include <IE.au3>
#include <Array.au3>

$sSearch = 'привет  ' ; что ищем
;Sleep(3000)

$oIE1 = _IECreate(' http://yandex.ru ') ;
$oForm = _IEFormGetCollection($oIE1, 0) ;
$oSearch = _IEFormElementGetObjByName($oForm, 'text') ;
_IEFormElementSetValue($oSearch, $sSearch) ;
_IEFormSubmit($oForm, 0) ; запрос
_IELoadWait($oIE1); ждём-с
;Sleep(3000) ; спим

$oLinks = _IELinkGetCollection ($oIE1)
$iNumLinks = @extended
Dim $aString[1]
For $oLink In $oLinks
   If Not StringInStr($oLink.href, 'yandex') And  StringRight($oLink.href, 1) <> '/' Then _ArrayAdd($aString,$oLink.href)
Next
$aString=_ArrayUnique($aString)
_ArrayDelete($aString,0)
_ArrayDelete($aString,0)

;_ArrayDisplay($aString)

$avArray=_ArrayCombinations($aString, 2, '|')
;_ArrayDisplay($avArray)

While 1
For $i= 1 To $avArray[0]   
 $sLink=StringSplit($avArray[$i],'|')      
		$oIE2 = _IEcreate($sLink[1])
        $oIE3 = _IEcreate($sLink[2])
        Sleep(5000)
        _IEQuit($oIE2)
        _IEQuit($oIE3)  
    Sleep(3000)
Next	
WEnd
 
Автор
A

Anb1s

Новичок
Сообщения
4
Репутация
0
что-то похожее получалось и ранее.
они гоняют циклом все сайты со страницы,а как сделать чтобы 2-3 сайта открыло рандомом на первой странице и успокоилось?)
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Anb1s
Если, например, в первом коде последний цикл убрать:
Код:
While 1
WEnd

тогда просто откроет 2 сайта
 
Автор
A

Anb1s

Новичок
Сообщения
4
Репутация
0
WSWR
вот этот кусок первой коде?
Код:
While 1
    $index = Random(2, UBound($aString) - 3);
        $oIE2 = _IEcreate($aString[$index])
        $oIE3 = _IEcreate($aString[$index+2])
        Sleep(5000)
        _IEQuit($oIE2)
        _IEQuit($oIE3)  
    Sleep(3000)
WEnd

меняем на вот этот?
Код:
While 1
WEnd

у меня вообще ничего не происходит
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Anb1s
Нет, это:
Код:
While 1
    $index = Random(2, UBound($aString) - 3);
        $oIE2 = _IEcreate($aString[$index])
        $oIE3 = _IEcreate($aString[$index+2])
        Sleep(5000)
        _IEQuit($oIE2)
        _IEQuit($oIE3)  
    Sleep(3000)
WEnd


заменить на это:

Код:
$index = Random(2, UBound($aString) - 3);
        $oIE2 = _IEcreate($aString[$index])
        $oIE3 = _IEcreate($aString[$index+2])
        Sleep(5000)
        _IEQuit($oIE2)
        _IEQuit($oIE3)

При запуске код откроет какие-то две ссылки
 
Верх