Что нового

Добавить условие для обновления страницы в функцию.

prokazzza

Новичок
Сообщения
160
Репутация
2
Всем доброго времени суток. Подскажите как можно добавить в функцию условие, при котором, при не нахождении скриптом необходимой кнопки (div class), обновлял страницу IE до тех пор, пока кнопка не будет найдена. Сам скрипт:

Код:
While 1
    $sLine = FileReadLine($hURL)
    If @error = -1 Then ExitLoop
    _IENavigate($oIE, $sLine)
	Sleep (3000)

	  $oSpans = $oIE.document.getElementsByTagName("div")
	  If IsObj($oSpans) Then
		 For $oSpan In $oSpans
			If $oSpan.className <> "необходимая кнопка" Then ContinueLoop
			$oSpan.click()
		 Next
	  EndIf

	  Sleep (5000)

	  $sText = _IEBodyReadText($oIE)
	  $aText = StringRegExp($sText, "(?si)значение (.*?)значение ", 3)
	  If Not @error Then $sText = $aText[0]
    FileWrite($hfile,  @CRLF & @CRLF & '--------------------------------------------------------------------------------------------------------------------------------' &  @CRLF & @CRLF & $sText)
WEnd


Добавить нужно к функции:

Код:
$oSpans = $oIE.document.getElementsByTagName("div")
	  If IsObj($oSpans) Then
		 For $oSpan In $oSpans
			If $oSpan.className <> "необходимая кнопка" Then ContinueLoop
			$oSpan.click()
		 Next
	  EndIf
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Обновить страницу можно так:
Код:
_IEAction($oIE, "refresh")
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
alex33 это то понятно :smile: но как добавить такое условие...
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
While 1
      _IEAction($oIE, "refresh")
	  $oSpans = $oIE.document.getElementsByTagName("div")
      If IsObj($oSpans) Then
         For $oSpan In $oSpans
            If $oSpan.className <> "необходимая кнопка" Then ContinueLoop
            $oSpan.click()
			ExitLoop 2
         Next
	  EndIf
	WEnd
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
C2H5OH в моем примере, в цикле идет подгрузка страниц:

Код:
$sLine = FileReadLine($hURL)


поэтому ваш вариант с завершением цикла не подходит, т.к у меня будет загружаться уже новая страница и старая останется просто без обработки :smile:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
не будет
Код:
While 1
    $sLine = FileReadLine($hURL)
    If @error = -1 Then ExitLoop
    _IENavigate($oIE, $sLine)
    Sleep (3000)

    While 1
      _IEAction($oIE, "refresh")
      $oSpans = $oIE.document.getElementsByTagName("div")
      If IsObj($oSpans) Then
         For $oSpan In $oSpans
            If $oSpan.className <> "необходимая кнопка" Then ContinueLoop
            $oSpan.click()
            ExitLoop 2
         Next
      EndIf
    WEnd

      Sleep (5000)

      $sText = _IEBodyReadText($oIE)
      $aText = StringRegExp($sText, "(?si)значение (.*?)значение ", 3)
      If Not @error Then $sText = $aText[0]
    FileWrite($hfile,  @CRLF & @CRLF & '--------------------------------------------------------------------------------------------------------------------------------' &  @CRLF & @CRLF & $sText)
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Я бы еще добавил Не надо, см. следующий пост.
Код:
;~ ...
_IEAction($oIE, "refresh")
_IELoadWait($oIE);добавлено
;~ ...
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
madmasles
Я бы еще добавил
Так вроде есть оно там ;)
Код:
Case $sAction = "refresh"
			$oObject.document.execCommand("Refresh")
			If @error Then ; Trap COM error, report and return
				__IEConsoleWriteError("Error", "_IEAction(refresh)", "$_IESTATUS_COMError", @error)
				Return SetError($_IESTATUS_ComError, @error, 0)
			EndIf
			_IELoadWait($oObject)
		Case $sAction = "selectall"
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
InnI [?]
Так вроде есть оно там
wink.gif
Спасибо!
OffTopic:
Блин! Надо заглядывать в UDF иногда. Сейчас буду убирать _IELoadWait() в куче своих скриптов. :'(
 
Верх