Что нового

Как не выполнять цикл если объект не существует?

Pennon

Новичок
Сообщения
45
Репутация
0
Есть
Код:
For $i = 1 To UBound($aResult) - 1
    _IENavigate($oIE, $aResult[$i])
	
_IELoadWait($oIE)
 $oInputs = _IETagNameGetCollection($oIE, 'span')
            For $oinput In $oInputs
                If $oinput.classname == 'icon-email-btn' Then
                    _IEAction($oinput, 'click')
					; $n_n += 1
                EndIf
			 Next
			 Sleep(500)
			 _IELoadWait($oIE)

И есть ошибка, иногда
Код:
"C:\Users\Administrator\Documents\autioit_m\5ks2.au3" (302) : ==> The requested action with this object has failed.:
If $oinput.classname == 'icon-email-btn' Then
If $oinput^ ERROR
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
For $i = 1 To UBound($aResult) - 1
    _IENavigate($oIE, $aResult[$i])
    
_IELoadWait($oIE)
 $oInputs = _IETagNameGetCollection($oIE, 'span')
			
            For $oinput In $oInputs
				If IsObj($oinput) Then
					If $oinput.classname == 'icon-email-btn' Then
						_IEAction($oinput, 'click')
						; $n_n += 1
					EndIf
				EndIf
             Next
             Sleep(500)
             _IELoadWait($oIE)
 
Автор
P

Pennon

Новичок
Сообщения
45
Репутация
0
Нет прав создать новую тему, спрошу здесь.
На странице с десяток одинаковых селекторов blockquote . Как взять значение второго по счёту?
Код:
For $i = 1 To UBound($aResult) - 1
    _IENavigate($oIE, $aResult[$i])
    $iVal2 = $oIE.document.querySelector("blockquote").innerText

    $iVal3 = $oIE.document.querySelector("#post_message_9664416 > blockquote > div > div > div > div.message").innerText
    $sHtml = _IEBodyReadHTML($oIE)
If StringInStr($sHtml, "Обращаем ваше внимание") > 0 Then
   $iVal =$iVal2
   Else
   $iVal =$iVal3
EndIf
Next
 
Последнее редактирование модератором:

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
$iVal2 = $oIE.document.querySelectorAll("blockquote")
$iVal2[1].innerText
 

ZaRaki

Знающий
Сообщения
48
Репутация
19
Спасибо, у меня ошибку пишет
Код:
"C:\Users\Administrator\Documents\????????????2.au3" (43) : ==> Subscript used on non-accessible variable.:
$iVal2[1].innerText
$iVal2^ ERROR
Объявлена Global $iVal2
Индекс элемента из массива возвращаемый через js код, обозначается в круглых скобках.
Код:
$oInputs = $oIE.querySelectorAll("blockquote")
$val = $oInputs(1).innerText

По существу вопроса, есть куча различных способов проверить присутствие элемента.
Код:
По id (если есть id у элемента) if(_IEGetObjById($oIE, "line1")<>0) then
По name (если есть name у элемента)  if(_IEGetObjByName($oIE, "line1",0)<>0) then
По номеру конкретного индекса тэга  if(_IETagNameGetCollection($oIE, "input",$index) <>0) then
По конкретному классу если он уникален:
$oElements =_IETagNameAllGetCollection($oIE)
For $oElement In $oElements
    if($oElement.className='bla bla bla') then
Next
 
Последнее редактирование:
Верх