Нажав на ссылку, используя VBScript - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь автоматизировать некоторую обработку на веб-странице.Я прочитал все статьи, которые смог найти, но он просто не подходит.

Это частичная веб-страница:

Webpage with data to retrieve

Это 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...