Что нового

[Ошибки] Проверка на "одинаковость"

Otherworld

Новичок
Сообщения
19
Репутация
0
В общем тут дело такое:
Скрипт (иногда редко, иногда часто), выдает ошибку и закрывается. Вот он:
Код:
Func ImageExists($sImage)
	$exists = False
	$oImgs = _IEImgGetCollection ($oIE)
	$iNumImg = @extended
	For $oImg In $oImgs
		If $oImg.nameProp=$sImage Then
			$exists = True
		EndIf
	Next
	Return $exists
EndFunc

Как видите - проверка на существование картинки на определенной странице. Скрипт работает, но иногда выдает:
Код:
If $oImg.nameProp=$sImage Then
If $oImg.nameProp=^ERROR

Error: The requested action with this object has failed.

В чем причина и как это устранить?
 

SyDr

Сидра
Сообщения
651
Репутация
158
Error: The requested action with this object has failed.
Ошибка: указанное действие с этим обьектом (эмм... не могу сказать это нормально) провалилось.

P. S. Из кода и названия темы можно только догадываться, что скрипт делает. Предположительно, проверяет, существует ли изображение?
 

Nik_rus

Python The Snake.
Сообщения
214
Репутация
62
OffTopic:
Otherworld сказал(а):
Как видите - проверка на существование картинки на определенной странице.
SyDr сказал(а):
Предположительно, проверяет, существует ли изображение?
К.О. в лице SyDr (не в обиду :smile:)

По делу - предположительно, у объекта нет атрибута nameProp, что и вызывает ашипку
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Ошибки] Проверка на \"одинаковость\"

Otherworld

nameProp
- возвращает имя файла, указанного в HREF или SRC. Применяется для тега <a> и <img>

Пример:

Код:
<img border="0" src="//yandex.st/lego/_/X31pO5JJJKEifJ7sfvuf3mGeD_8.png" alt="На главную страницу Яндекса" class="b-head-logo__img">

Код:
$object.nameProp ; вернёт X31pO5JJJKEifJ7sfvuf3mGeD_8.png


Код:
<a onclick="return FFHome.toggle('http://www.yandex.ru/?clid=40795');" href="http://help.yandex.ru/start/" id="sethome">Сделать Яндекс стартовой страницей</a>

Код:
$object.nameProp ; вернёт start


По одному и тому же адресу, ошибка постоянная?


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

Дайте ссылку, по которой скрипт выдаёт ошибку.
 
Автор
O

Otherworld

Новичок
Сообщения
19
Репутация
0
Garrett [?]
По одному и тому же адресу, ошибка постоянная?
Я работаю только с одним сайтом, если я вас правильно понял.
Код использую так:
Код:
If ImageExists("image.png") = True Then
     ;Здесь открываю нужную ссылку
EndIf

В общем, иногда выдает ошибку, но сейчас запустил свою программу - уже час как без ошибок. Самое интересное, когда я отправил программу другому человеку - у него такой ошибки вообще не было.

Заметка:
Я проверяю страницы на 6 картинок. И одна (любая) из них может выдать ошибку, но они загружаются, в основном, нормально.
Пример картинки:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Вроде всё правильно, ошибок не заметил.
Вариант с Google выдаст False, так как логотип вставляется через CSS.

Код:
#include <IE.au3>
;~ Dim $sImage = "logo.png"
;~ $oIE =_IECreate("http://yandex.ru/")

Dim $sImage = "logo1w.png"
$oIE =_IECreate("http://www.google.ru/")

MsgBox(0, "", ImageExists($sImage))

Func ImageExists($sImage)
	Local $exists = False
    $oImgs = _IEImgGetCollection($oIE)
    For $oImg In $oImgs
        If $oImg.nameProp == $sImage Then
            $exists = True
			ExitLoop
        EndIf
    Next
    Return $exists
EndFunc
 
Автор
O

Otherworld

Новичок
Сообщения
19
Репутация
0
Garrett [?]
так как логотип вставляется через CSS.
Получается на сайте, для которого я программирую, страница иногда без CSS, а иногда с ней? :wacko:
Garrett сказал(а):
Код:
If $oImg.nameProp == $sImage Then
            $exists = True
			ExitLoop
        EndIf
    Next

Во я невнимательный, ExitLoop забыл :whistle:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: [Ошибки] Проверка на \"одинаковость\"

Otherworld
Это я для примера привёл! Нужно смотреть какими способами вставляются картинки! Например Google вставляет свой логотип вот так:
[box title=HTML]<div align="left" onload="window.lol&amp;&amp;lol()" id="logo" title="Google" style="background: url(&quot;/intl/en_com/images/srpr/logo1w.png&quot;) no-repeat scroll 0% 0% transparent; height: 110px; width: 276px;"><div style="color: rgb(119, 119, 119); font-size: 16px; font-weight: bold; left: 214px; position: relative; top: 70px;" nowrap="">Россия</div></div>[/box]
Как мы видим здесь и не "пахнет" тегами <a> и <img>! Но! Картинка всё же отображается ;)


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

Garrett [?]
nameProp - возвращает имя файла, указанного в HREF или SRC. Применяется для тега <a> и <img>
и только!!!
 
Автор
O

Otherworld

Новичок
Сообщения
19
Репутация
0
Re: [Ошибки] Проверка на \"одинаковость\"

Garrett [?]
Garrett [?]Цитата
nameProp - возвращает имя файла, указанного в HREF или SRC. Применяется для тега <a> и <img>
и только!!!
Именно! Может скрипт нормально проверяет страницу с картинками в начале (то, что мне нужно), которые с тегом <a>, а потом опускается вниз и там картинка, вставленная другим методом. Потому добавил ExitLoop, посмотрим, что получится :-\


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

Теперь ошибку выдает, когда нет ни одной нужной мне картинки. То есть, вниз он опускается... :'( Вот как это исправить?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Otherworld
Попробуйте так:
Код:
#include <IE.au3>
Dim $sImage = "logo.png"
$oIE =_IECreate("http://yandex.ru/")

$Result = ImageExists($sImage)
If Not @error Then MsgBox(0, "Img", $Result)

Func ImageExists($sImage)
	Local $Result
    $oImgs = _IEImgGetCollection($oIE)
    For $oImg In $oImgs
        If $oImg.nameProp == $sImage Then
			SetError(0)
			$Result = $oImg.nameProp
			Return $Result
            ExitLoop		
		EndIf
    Next
	SetError(1)
	Return $Result = 0
EndFunc
 
Автор
O

Otherworld

Новичок
Сообщения
19
Репутация
0
Re: [Ошибки] Проверка на \"одинаковость\"

Пока работает :laugh:
Если что будет - скажу)))


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

опять ошибка
 
Верх