Я пытаюсь автоматизировать некоторую обработку на веб-странице.Я прочитал все статьи, которые смог найти, но он просто не подходит.
Это частичная веб-страница:
Это HTML-код ниже:
<div class="rgWrap rgArrPart2">
<a title="Go to Next Page" href="javascript:__doPostBack('ctl00j','')">Volgende</a>
<input type="submit" name="ctl003" value=" " title="Next Page" class="rgPageNext" />
<a title="Go to Last Page" href="javascript:__doPostBack('ctl004','')">Laatste</a>
<input type="submit" name="ctl005" value=" " title="Last Page" class="rgPageLast" />
"Volgende" и "Laatste" в переводе с голландского означают "Next" и "Last".
Код, который я пробуюдля сборки нужно нажать на «Волганд», чтобы я получил следующую страницу с записями.
Я попробовал следующий код:
GetElementById()
:
IE.Document.GetElementById("ctl00j").Click()
GetElementsByTagName()
и фильтр по значению:
Set oInputs = IE.Document.GetElementsByTagName("input")
For Each elm In oInputs
If elm.Value = "Go to Next Page" Then
elm.Click
Exit For
End If
Next
GetElementsByClassName()
:
For Each elem In IE.Document.GetElementsByClassName("rgPageNext")
If elem.innerText = "Go to Next Page" Then
elem.Focus
elem.Click
End If
Next
GetElementsByTagName()
и фильтрация по атрибуту class
:
For Each a In IE.document.getElementsByTagName("a")
If a.GetAttribute("class") = "rgPageNext" Then
a.Click
Exit For
End If
Next
GetElementsByTagName()
и фильтрация по атрибуту title
:
For Each a In IE.document.getElementsByTagName("a")
If a.getAttribute("title") = "Go to Next Page" Then
a.Click
Exit For
End If
Next
Первый подход выдает это сообщение об ошибке:
Сценарий: K: \ temp \ TT \ mftt.vbs
Строка: 37
Char: 2
Ошибка: требуется объект: 'IE.Document.getElementByID (...)'
Код: 800A01A8
Источник: ошибка выполнения Microsoft VBScript
Другие попытки не дают сообщений об ошибках, но также не реагируют на ссылку.Я пропускаю здесь событие OnClick
.С другими ссылками в этом проекте присутствовало событие OnClick
.Я не могу изменить HTML, поэтому я застрял.
ОБНОВЛЕНИЕ1: Добавлен код до сих пор.Я занят только нажатием на ссылки.У меня нет потока процессов или встроенных итераций. Это будет дальше.
' // Login procedure for ... //
Dim WshShell
Dim IE
Dim strLoginName
Dim strPassword
Set WshShell = WScript.CreateObject("WScript.Shell")
SET IE = Nothing
Call LogIn
Function LogIn
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Visible = True
IE.Navigate "https://www.mijn.nl/"
Wait IE,500
With IE.Document
.getElementByID("ctl00_mainContentPlaceHolder_ctl00_Login1_UserName").value = "username"
.getElementByID("ctl00_mainContentPlaceHolder_ctl00_Login1_Password").value = "password"
.getElementByID("ctl00_mainContentPlaceHolder_ctl00_Login1_LoginButton1").Click()
End With
Wait IE, 500
IE.Navigate "https://www.mijn.nl/deelnemerlijst.aspx"
'now we have the page where we can select the clients
Wait IE, 500
With IE.Document
'by clicking the 'search' button, we create a client list
.getElementByID("ctl00_mainContentPlaceHolder_ctl00_zoekLanguageButton").Click()
Wait IE, 500
'in the client list we select the first one
'here I need to make a iteration for all the clients
.getElementById("ctl00_mainContentPlaceHolder_ctl00_RadGrid1_ctl00_ctl04_DeelnemerKodeLinkButton").Click()
Wait IE, 500
End With
'We go to the transction overview page
IE.navigate "https://www.mijn.nl/Overzichten/TransactionOverview.aspx"
Wait IE, 1500
'here I need to click on ">" on the page to open details I need to extract
'There are max 10 lines
' [ some iteration code ]
'click on next transaction page
For Each a In IE.document.getElementsByTagName("a")
If a.getAttribute("title") = "Go to Next Page" Then
a.Click
Exit For
End If
Next
End Function
Sub Wait(IE, SleepInterval)
Do
WScript.Sleep SleepInterval
Loop While IE.ReadyState < 4 Or IE.Busy
End Sub
SET IE = Nothing