Что нового

Поочерёдные клики по элементам div

TpeTTep

Новичок
Сообщения
39
Репутация
0
Доброго времени суток. Появилась необходимость поработать с IE. Со всем вроде бы разобрался, но есть одно но. В общем страница выдает 20 div'ов с одинаковым classname. Все эти div'ы нужно поочерёдно прокликать. Первый клик проходит, остальные нет. Помогите разобраться)
Код:
$oDives = _IETagNameGetCollection($oIE, "div")
For $oDiv in $oDives
   If $oDiv.classname = "section-result" Then
      $oDiv.Click()
      Sleep(3000)
      ;тут нужные мне действия, а ниже идет возврат назад к списку div'ов
      $oButtons = _IETagNameGetCollection($oIE, "button")
      For $oButton in $oButtons
         If $oButton.classname = "section-back-to-list-button blue-link noprint" Then
            $oButton.Click()
            ExitLoop
         Endif
      Next
      Sleep(1000)
   EndIf
Next
 

gunter123

Продвинутый
Сообщения
139
Репутация
55
Возможно после клика по div`у страница обновляется и эта коллекция уже не содержит div`ов, поэтому ее надо обновлять

Код:
$iLength = $oIE.document.querySelectorAll('div.section-result').length            ; Получаем количество div`ов
ConsoleWrite('Найдено ' & $iLength & ' div`ов' & @CRLF)

For $iNumber = 0 To $iLength - 1
   $oDiv = $oIE.document.querySelectorAll('div.section-result')[$iNumber]      ; Ищем div под нужным номером
   If Not IsObj($oDiv) Then Exit MsgBox(4096, 'Ошибка', 'Не найден div #' & $iNumber)
   $oDiv.Click()
   Sleep(3000)

   $oButton = $oIE.document.querySelector("button.section-back-to-list-button.blue-link.noprint")
   If Not IsObj($oButton) Then Exit MsgBox(4096, '', 'Не найдена кнопка')
   $oButton.Click()
   Sleep(1000)
Next
 

gunter123

Продвинутый
Сообщения
139
Репутация
55
А эти div`ы в процессе работы скрипта пропадают со страницы?
 

gunter123

Продвинутый
Сообщения
139
Репутация
55
Тогда вот так можно. Будет постоянно кликать на первый найденный div

Код:
$iLength = $oIE.document.querySelectorAll('div.section-result').length            ; Получаем количество div`ов
ConsoleWrite('Найдено ' & $iLength & ' div`ов' & @CRLF)

For $iNumber = 0 To $iLength - 1
   $oDiv = $oIE.document.querySelector('div.section-result')
   If Not IsObj($oDiv) Then Exit MsgBox(4096, 'Ошибка', 'Не найден div #' & $iNumber)
   $oDiv.Click()
   Sleep(3000)

   $oButton = $oIE.document.querySelector("button.section-back-to-list-button.blue-link.noprint")
   If Not IsObj($oButton) Then Exit MsgBox(4096, '', 'Не найдена кнопка')
   $oButton.Click()
   Sleep(1000)
Next
 
Автор
T

TpeTTep

Новичок
Сообщения
39
Репутация
0
Будет постоянно кликать на первый найденный div
В том то и дело, что он должен открывать их последовательно. М.б есть способ изменить название класса для div'a? Хотя не, это не сработает. После возврата к списку div'ов имена восстановятся
 

gunter123

Продвинутый
Сообщения
139
Репутация
55
мб так заработает

Код:
$iLength = $oIE.document.querySelectorAll('div.section-result').length        ; Получаем количество div`ов
ConsoleWrite('Найдено ' & $iLength & ' div`ов' & @CRLF)

Global $oDivs, $oButton

For $iNumber = 0 To $iLength - 1
   ConsoleWrite('Ждем появления div`ов на странице' & @CRLF)
   Do
      $oDivs = $oIE.document.querySelectorAll('div.section-result')
      Sleep(500)
   Until IsObj($oDivs) And $oDivs.length == $iLength
   $oDivs[$iNumber].Click()
   Sleep(1000)

   ConsoleWrite('Ждем появления кнопки на странице' & @CRLF)
   Do
      $oButton = $oIE.document.querySelector("button.section-back-to-list-button.blue-link.noprint")
      Sleep(500)
   Until IsObj($oButton)
   $oButton.Click()
   Sleep(1000)
Next
 
Автор
T

TpeTTep

Новичок
Сообщения
39
Репутация
0
Что в консоли пишет?
Код:
"C:\Users\User\Desktop\AutoIt v3 Script.au3" (31) : ==> Subscript used on non-accessible variable.:
$oDivs[$iNumber].Click()
$oDivs^ ERROR

Он ругается на то, что мол это не массив, ну мне так кажется. Интересно то, что он даже первого клика не делает.
 

gunter123

Продвинутый
Сообщения
139
Репутация
55
Даже не знаю.. Скинь ссылку на сайт, если можешь
 
Верх