Что нового

Проверка элемента на странице с помощью IF ELSE

sat3133

Новичок
Сообщения
3
Репутация
0
Всем, здравствуйте, помогите разобраться новичку.
Ниже приведен простенький код, который должен проверить на форме, есть ли ссылка с таким то текстом, если да - отображаем сообщение "есть текст", если не находит то "текста нет". Постоянно сообщает мне, что текста нет, хотя если закомитить код под ELSE, тогда все успешно находит. Гляньте плиз что не так..

Код:
#include <IE.au3>
$oIE = _IECreate ("http://www.mail.ru")
_IELoadWait($oIE,1000)
$oLinks =  _IELinkGetCollection($oIE)
	For $oLink in $oLinks
		If _IEPropertyGet($oLink,'innertext')== "Поиск в интернете" Then
			MsgBox (0,'Уведомление', 'Текст вижу')
		Else
			MsgBox (0,'Уведомление', 'Текст не вижу')
		ExitLoop

		EndIf
	Next
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Надеюсь, это небольшое добавление навеет Вам что-нибудь.

Код:
#include <IE.au3>
$oIE = _IECreate ("http://www.mail.ru")
_IELoadWait($oIE,1000)
$oLinks =  _IELinkGetCollection($oIE)
$n = @extended
MsgBox (0,'Информация', 'Найдено ссылок ' & $n)
    For $oLink in $oLinks
        If _IEPropertyGet($oLink,'innertext')== "Поиск в интернете" Then
            MsgBox (0,'Уведомление', 'Текст вижу')
        Else
            MsgBox (0,'Уведомление', 'Текст не вижу')
        ExitLoop

        EndIf
    Next
 
Автор
S

sat3133

Новичок
Сообщения
3
Репутация
0
C2H5OH сказал(а):
Надеюсь, это небольшое добавление навеет Вам что-нибудь.

Спасибо, но мимо(не навеяло). Вопрос в том почему сразу срабатывает ELSE, а не выполняется код под IF.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
sat3133, переставьте ExitLoop
В вашем случае цикл берёт первую ссылку и если она не подходит под условие то выполняется блок Else, а затем выход из цикла и таким образом он проверяет только первую ссылку и всё...
Код:
#include <IE.au3>
$oIE = _IECreate ("http://www.mail.ru")
_IELoadWait($oIE,1000)
$oLinks =  _IELinkGetCollection($oIE)
    For $oLink in $oLinks
        If _IEPropertyGet($oLink,'innertext')== "Поиск в интернете" Then
            MsgBox (0,'Уведомление', 'Текст вижу')
        ExitLoop
        Else
            MsgBox (0,'Уведомление', 'Текст не вижу')
        EndIf
    Next

И вообще я бы сделал так:
Код:
#include <IE.au3>
$oIE = _IECreate ("http://www.mail.ru")
_IELoadWait($oIE,1000)
$oLinks =  _IELinkGetCollection($oIE)
Local $isFind = false
For $oLink in $oLinks
        If _IEPropertyGet($oLink,'innertext')== "Поиск в интернете" Then
            $isFind = True
            MsgBox (0,'Уведомление', 'Текст вижу')
        ExitLoop
		EndIf
Next
If Not $isFind Then
        MsgBox (0,'Уведомление', 'Текст не вижу')
EndIf



C2H5OH
Я что-то тоже не понял что вы имели ввиду...
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
То же и имел в виду, что ссылок на этой станице немало, а он проверяет только первую.
 
Автор
S

sat3133

Новичок
Сообщения
3
Репутация
0
sat3133, переставьте ExitLoop

Первый пример с переставленным ExitLoop не работает (т.е. ничего не изменилось)

А вот второй работает как надо, за него спасибо.
 

ssvih-miaa

Новичок
Сообщения
41
Репутация
0
Добрый день, помогите разобраться в чем косяк не пойму, на срабатывает условие после ELSE
Код:
Func fGetWork($oIE)

   _IENavigate($oIE, $fGBDomain & $fGBWork & $fWorkLinks[0]) ; Переходим на первую ссылки поиска работы

   _IELoadWait($oIE)

   Sleep(2000)

	$i = 1

	For $i = 1 To 8

     $oDivs = _IETagNameGetCollection($oIE, "div") ; Получаю колекцию div'ов со стараницы

	  For $oDiv In $oDivs

		 If $oDiv.ClassName == 'alert alert-info' Then ; Сравниваю если class у div'а такой то ->

			$text = '(?i)Извините, в данный момент нет заданий для заработка. Зайдите позже.' ; назначаю переменную с текстом для сравнения, символы с переди отбрасывают лишние теги

				$aRes = StringRegExp($oDiv.innerhtml, $text, 1)

				If @error Then ExitLoop

				   If $aRes[0] == "Извините, в данный момент нет заданий для заработка. Зайдите позже." Then

				   _IENavigate($oIE, $fGBDomain & $fGBWork & $fWorkLinks[$i])

				   _IELoadWait($oIE)

				   Sleep(2000)

				   ; Здесь начинаем проверку ссылки и выбираем сценарий для работы

				   ;fIfNotWork($oIE)
				   ConsoleWrite("Нет работы" & @LF)

				   Else

					 ConsoleWrite("Нет работы123" & @LF)

				   EndIf

		 EndIf

	  Next

   Next

EndFunc
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
ssvih-miaa

Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.





sat3133

[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Верх