Что нового

Как установить свое время для таймаута загрузки IE

joker2d

Новичок
Сообщения
182
Репутация
0
Не могу понять логику работы _IELoadWaitTimeout
Как я представлял, да и судя по справке, эта функция завязана с _IELoadWait и говорит ей сколько надо вообще ждать пока грузиться IE

указываю время 1 мс чтобы точно была ошибка по таймауту но ничего нет
Код:
_IELoadWaitTimeout (1)
$oIE = _IECreate ("site.com")
_IELoadWait ($oIE)
If @Error Then
	MsgBox(0, '', @Error)
EndIf


И еще консоль пишет ошибку
C:\Program Files\AutoIt3\Include\IE.au3 (561) : ==> The requested action with this object has failed.:
While Not (String($:shok:bject.document.readyState) = "complete" Or $:shok:bject.document.readyState = 4 Or $f_Abort)
While Not (String($:shok:bject.document^ ERROR

то есть что то в IE.au3

Наверно я не так понял логику работы _IELoadWaitTimeout

цель просто чтобы _IELoadWait ($oIE) не вечно ждал пока там IE загрузит страницу, а только отведенное мной время.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Шутим, да?
Не хотим ждать пока объект создастся и сразу мчимся работать с ним. А потом удивляемся почему у нас ошибки лезут??

А слабо ошибки проверить до попытки что-то делать с объектом, то есть сразу после создания объекта?
Код:
$oIE = _IECreate ("site.com")
If @Error Then
    MsgBox(0, '', @Error)
EndIf
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
Redline
До всплывающего окна MsgBox все равно не доходит

А скрипт вылетает с той же ошибкой
C:\Program Files\AutoIt3\Include\IE.au3 (561) : ==> The requested action with this object has failed.:
While Not (String($:shok:bject.document.readyState) = "complete" Or $:shok:bject.document.readyState = 4 Or $f_Abort)
While Not (String($:shok:bject.document^ ERROR
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
#include <IE.au3>

_IELoadWaitTimeout (1)

$oIE = _IECreate("site.com")
MsgBox(0, '_IECreate', "Error : " & @Error & @CRLF & "Extended : " & @extended)
_IELoadWait ($oIE)
MsgBox(0, '_IELoadWait ', "Error : " & @Error & @CRLF & "Extended : " & @extended)


Куда не доходит?
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
C2H5OH
сделал так
Код:
MsgBox(0, '1', @Error)
	_IELoadWaitTimeout(1)
	MsgBox(0, '2', @Error)
	$oIE = _IECreate("site.com", 0, 1, 0)
	MsgBox(0, '3', @Error)
	_IELoadWait($oIE)
	MsgBox(0, '4', @Error)


Доходит только до цифры 3
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
#include <IE.au3>

ConsoleWrite('точка 1, ошибка - ' & @Error & @CRLF)
_IELoadWaitTimeout(1)
ConsoleWrite('точка 2, ошибка - ' & @Error & @CRLF)
$oIE = _IECreate("http://autoit-script.ru/", 0, 1, 0)
ConsoleWrite('точка 3, ошибка - ' & @Error & @CRLF)
_IELoadWait($oIE)
ConsoleWrite('точка 4, ошибка - ' & @Error & @CRLF)


Код:
точка 1, ошибка - 0
точка 2, ошибка - 0
точка 3, ошибка - 0
--> IE.au3 V2.4-0 Warning from function _IELoadWait, $_IEStatus_LoadWaitTimeout
точка 4, ошибка - 6
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
C2H5OH

То есть таймаут работает ?
Тогда я не пойму как поймать эту ошибку по таймауту, почему у меня скрипт вылетает и не выполняет условие
Код:
If @Error Then
    MsgBox(0, '', @Error)
EndIf


после строки
Код:
_IELoadWait($oIE)
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Не хотим ждать пока объект создастся и сразу мчимся работать с ним. А потом удивляемся почему у нас ошибки лезут??

Зачем вообще менять таймаут? Чем помешал таймаут?
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
C2H5OH
не в таймауте дело, мне просто нужно если IE долго не будет грузиться выполнилась обработка этой ошибки и загрузился новый IE, а как ее поймать тогда ?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Вот мы недавно обсуждали такую же тему
http://autoit-script.ru/index.php/topic,10940.msg72078.html#msg72078
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
C2H5OH
Спасибо!
Надо было сразу сказать про _IENavigate :laugh:

Вот так все работает и ошибка ловиться
Код:
$oIE = _IECreate ()
_IENavigate ($oIE, "http://autoit-script.ru",0)
_IELoadWait($oIE,0,1)
If @Error Then
    MsgBox(0, '', @Error)
EndIf


Хотя конечно остается небольшой интерес к _IELoadWaitTimeout, почему он не работает и зачем он вообще нужен ?
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
joker2d [?]
While Not (String($:shok:bject.document.readyState) = "complete" Or $:shok:bject.document.readyState = 4 Or $f_Abort)
Если мне память не изменяет, то ошибка в IE. Сталкивался с этим: WinXP SP3 + IE 8 = на некоторых сайтах в статусе пишется не "Готово", а "Ошибка" (у меня это был JavaScript - выдавал ошибку).
 
Верх