Что нового

Переход на страницу в цикле | IE

SHoCK13666

Новичок
Сообщения
108
Репутация
0
Нужно в цикле переходить на нужную страницу и искать там текст.
Проблемы в переходе. Вот мой код:
Код:
#include <IE.au3>

$oIE = _IECreate("site.ru")

$id_task = 1

while 1
   _IENavigate ($oIE, "http://site.ru/?id=" & $id_task)
   _IELoadWait($oIE)
   sleep(5000)
   $sText = _IEBodyReadText ($oIE)
   if StringInStr($sText, "текст") Then
	  msgbox(0,'','Нашёл')
   EndIf
   $id_task += 1
 msgbox(0,'','Дальше')
WEnd

В этом варианте цикл и переходы работают, после мсгбокса переход на страницу осуществляется
Но если мсгбокс убрать, перехода нет... А может быть не работает цикл... В общем, не понятно...
В чёмможет быть проблема?
 
Автор
S

SHoCK13666

Новичок
Сообщения
108
Репутация
0
Даже если код максимально упростить и убрать условие
Код:
#include <IE.au3>

$oIE = _IECreate("site.ru",1,1,0)

$id_task = 1

while 1
   _IENavigate ($oIE, "http://site.ru/?id=" & $id_task)

   sleep(5000)

   $id_task += 1

WEnd

всё равно не работает...
переход на страницу осуществляется только 1 раз...
если в любое место в цикле добавить мсгбокс, то работает...
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Вывод: сделай Sleep ещё побольше.


Добавлено:
Сообщение автоматически объединено:

Или сделай msgbox с таймаутом
 
Автор
S

SHoCK13666

Новичок
Сообщения
108
Репутация
0
alex33
мсгбокс там волбще не нужен. Я просто для примера привёл, что с ним работает.
увеличение sleep'а до 30 сек не дало результатов
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Вот я написал функцию. Попробуйте её вставьте в свой скрипт и сделайте переходы через неё.
Код:
;#include <IE.au3>
Func _My_IENavigate(ByRef $o_IE, $s_Url, $f_Wait = 1, $i_count = 20)
	Local $i_error = 0, $i_extended
	For $c = 1 To $i_count
		_IENavigate($o_IE, $s_Url, $f_Wait)
		$i_error = @error
		$i_extended = @extended
		If Not $i_error Then
			Return SetError(1, $i_error, $i_extended)
			ExitLoop
		EndIf
		Sleep(1000)
	Next
	Return SetError(0, $i_error, $i_extended)
EndFunc   ;==>_My_IENavigate
 
Автор
S

SHoCK13666

Новичок
Сообщения
108
Репутация
0
alex33, абсолютно никаких изменений. Открывается ие, выполняется переход на site.ru/?id=1, затем на site.ru/?id=2. И на этом всё. Если в любое место добавить мсгбокс, всё работает.....


Добавлено:
Сообщение автоматически объединено:

Просто ради интереса взял пример из справки и добавил туда ещё 1 переход.
Код:
#include <IE.au3>
$oIE = _IECreate ("www.autoitscript.com") ; Создаёт окно браузера с переходом на веб-сайт
Sleep(5000) ; Ожидает 5 секунд
_IENavigate ($oIE, "http://www.autoitscript.com/forum/index.php?") ; Переход на другую страницу
Sleep(5000) ; Ожидает 5 секунд
_IENavigate ($oIE, "http://www.autoitscript.com/forum/index.php?showforum=9") ; Переход на другую страницу
Sleep(5000) ; Ожидает 5 секунд
_IENavigate ($oIE, "http://www.autoitscript.com/") ; Переход на другую страницу

И что вы думаете? 2 перехода делает, а дальше просто стоит, ничего не делая.
В топку autoit
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Win XP SP2, IE 6.0 Всё замечательно работает
Код:
#include <IE.au3>
$oIE = _IECreate ("http://autoit-script.ru/index.php?board=4.0") ; Создаёт окно браузера с переходом на веб-сайт
_IELoadWait($oIE)
$sText = WinGetTitle("[ACTIVE]")
MsgBox(0, "Загружена страница", $sText)
_IENavigate ($oIE, "http://autoit-script.ru/index.php?board=28.0") ; Переход на другую страницу
_IELoadWait($oIE)
$sText = WinGetTitle("[ACTIVE]")
MsgBox(0, "Загружена страница", $sText)
_IENavigate ($oIE, "http://autoit-script.ru/index.php?board=27.0") ; Переход на другую страницу
_IELoadWait($oIE)
$sText = WinGetTitle("[ACTIVE]")
MsgBox(0, "Загружена страница", $sText)
_IENavigate ($oIE, "http://autoit-script.ru/index.php?board=7.0") ; Переход на другую страницу
_IELoadWait($oIE)
$sText = WinGetTitle("[ACTIVE]")
MsgBox(0, "Загружена страница", $sText)
Бывает на пару секунд, полоса загрузки уже пропала, а надпись, что загружена не появилась
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
SHoCK13666
Дайте лучше реальный сайт для которого возникает эта проблема.
 
Автор
S

SHoCK13666

Новичок
Сообщения
108
Репутация
0
alex33, допустим, вот. http://wmmail.ru/?cf=uzd-readtask&zdid=
Нужно чекать id в поисках нужного текста.


Добавлено:
Сообщение автоматически объединено:

edyapd, у меня windows 8.1....


Добавлено:
Сообщение автоматически объединено:

edyapd, а без мсгбоксов у вас будет это работать?


Добавлено:
Сообщение автоматически объединено:

Ещё очень странно то, что я не могу выполнить две одинаковые функции подряд. Например, вот.
Код:
#include <IE.au3>

$oIE = _IECreate("http://wmmail.ru/",1)

$id_task = 1

   _IEDocWriteHTML ($oIE, "<a href='http://wmmail.ru/?cf=uzd-readtask&zdid=" & $id_task & "'>Следующий id</a>")
   sleep(1000)
   _IELinkClickByText ($oIE, "Следующий id")

   $id_task += 1
   sleep(1000)
   _IEDocWriteHTML ($oIE, "<a href='http://wmmail.ru/?cf=uzd-readtask&zdid=" & $id_task & "'>Следующий id</a>")

Нормально открывается страница, весь html код страницы заменяется на ссылку. Кликаем по этой ссылке.
А дальше html код не заменяется...
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
SHoCK13666 сказал(а):
edyapd, а без мсгбоксов у вас будет это работать?
Да, всё работает. Сам IE только тормозной, в Опере это у меня раза в два-три быстрее открывается.
 
Автор
S

SHoCK13666

Новичок
Сообщения
108
Репутация
0
edyapd, сейчас попробую прставить виртуалку win xp. Может именно в восьмой не работает....


Добавлено:
Сообщение автоматически объединено:

Действительно, в win xp всё работает...
С win 8 у autoit'а какие-то проблемы...
 
Верх