Что нового

Узнать, произошла ли ошибка во время загрузки страницы

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
Возникла очередная проблемка .
Нужно после вызова _IECreate узнать, с ошибкой ли загрузилась страница.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
http://autoit-script.ru/autoit3_docs/libfunctions/_iecreate.htm

Возвращаемое значение

Успех: Returns an object variable pointing to an InternetExplorer.Application object
Ошибка: Returns 0 and sets @ERROR
@Error: 0 ($_IEStatus_Success) = No Error
1 ($_IEStatus_GeneralError) = General Error
3 ($_IEStatus_InvalidDataType) = Invalid Data Type
4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
8 ($_IEStatus_AccessIsDenied) = Access Is Denied
9 ($_IEStatus_ClientDisconnected) = Client Disconnected
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Попробовал. :-[
Он считает вот эту ерунду успешно созданной страницей
[box title=] Internet Explorer не может отобразить эту веб-страницу

Попробуйте сделать следующее:
Диагностика проблем подключения

Подробнее [/box]
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
А попробуйте посмотреть что выдаёт _IEBodyReadHTML и _IEBodyReadText. Мне кажется, можно на основе этого делать выводы
 

focus

Осваивающий
Сообщения
69
Репутация
20
Попробуйте так
Код:
#include <IE.au3>

$hwnd=WinGetHandle('[CLASS:IEFrame]')
$oIE = _IEAttach ($hwnd,'HWND')
$sTitle = WinGetTitle($hwnd,"[ACTIVE]")
ConsoleWrite($sTitle & @CRLF)
if $sTitle ='Internet Explorer не может отобразить эту веб-страницу - Windows Internet Explorer' Then Exit
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
focus
Но этот вариант не всегда уместен.. :(
 
Автор
K

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
Что-то нахимичил, вроде работает.
В @error записывается число 10, а в @extended записывается http error code.
Пример использования:
Код:
#include "MyIE.au3"
$oIE = _IEMyCreate("http://google.ru")
If @error Then MsgBox(0,"","error = " & @error & ", extended = " & @extended)

_IEMyNavigate($oIE, "http://test.ru")
If @error Then MsgBox(0,"","error = " & @error & ", extended = " & @extended)
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Ну, вот тут ты что-то явно пропустил
Код:
$__Error = False
	_IENavigate($o_object, $s_Url, $f_wait)
							; <======== вот тут
	If $__Error Then Return SetError(10, $__ErrorCode, $o_object)

	Return SetError(@error, 0, $o_object)
EndFunc


А вообще, наверное, не работает, потому что у _IENavigate та же проблема с ошибкой во время загрузки страницы, что и у _IECreate. Поэтому после неудачного _IENavigate @error будет 0
 
Автор
K

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
зато $__Error не будет равен 0, если будет ошибка
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Думаешь?
Поиграйся
Код:
#include <IE.au3>
$oIE = _IECreate ("fignya")
$__Error = False
$res = _IENavigate($oIE,"fignya2")
MsgBox(0, "", "непонятная переменная $__Error: " & $__Error)
If $res = -1 Then
	MsgBox(0, "", "успешно создан")
Else
	MsgBox(0, "", "ошибка №" & @error)
EndIf
 
Автор
K

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
C2H5OH мб хватит гадать? :smile:
Попробуй то, что выше выложил.
 

C2H5OH

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

$oIE = _IEMyCreate ("fignya")

If @error = 0 Then
	MsgBox(0, "", "успешно открыт")
Else
	MsgBox(0, "", "ошибка № " & @error)
EndIf

_IEMyNavigate($oIE,"fignya2")

If @error = 0 Then
	MsgBox(0, "", "успешно открыт")
Else
	MsgBox(0, "", "ошибка № " & @error)
EndIf
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Когда начинает пробовать коннект поднять, то ошибка № 10, при этом в IE вот такое
[box title=] The webpage is unavailable because you are offline

What you can try:
Connect to the Internet.

Make sure you are not working offline. Click Tools and make sure that Work Offline is not checked.

For offline users [/box]

А когда IE настроен так что не выпадает в офлайн и пишет вот такое
[box title=] Internet Explorer не может отобразить эту веб-страницу

Попробуйте сделать следующее:
Диагностика проблем подключения

Подробнее [/box]
то считает что страница успешно открыта.

Прогресс, конечно, налицо - _IECreate и _IENavigate в первом варианте (с переходом в офлайн) считают что страница всё равно успешно открыта.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Где найти примеры всех страниц ошибок? Всё-таки думаю через _IEBodyReadHTML надёжней будет
 
Автор
K

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
DarWiM [?]
Всё-таки думаю через _IEBodyReadHTML надёжней будет
не будет

C2H5OH с автономным режимом действительно есть проблема. NavigateError не отлавливается.
даже на обычный режим не хочет переключатся с помощью $oIE.offline = false,
да и возвращает всегда false
 
Верх