Нажатие на гиперссылку с частичной ссылкой на Inte rnet Explorer с использованием vba - PullRequest
0 голосов
/ 15 января 2020

Привет! Я пытаюсь создать скрипт, чтобы перейти по ссылке, которую я могу предоставить частичной ссылкой. Было бы здорово, если бы кто-то мог посоветовать, пожалуйста, как я могу это сделать

<a href="website/report/download.json?refId=3e49762e-8edc-47c2-a282-11ee3c64e85a&amp;reportType=xlsx&amp;fileName=GeneralExtract.xlsx&amp;obo>GeneralExtract.xlsx</a>


Set i = CreateObject("InternetExplorer.Application")
Dim idoc As MSHTML.HTMLDocument
Set idoc = i.document
Set eles6 = idoc.getElementsByTagName("a")


For Each ele6 In eles6
If ele6.href = "fileName=GeneralExtract" Then
    ele6.Click
Else
End If

1 Ответ

0 голосов
/ 16 января 2020

Попробуйте использовать метод querySelector и селектор [attribute^=value] CSS , он выберет каждый элемент, значение атрибута href которого начинается со специального значения.

Пример кода, как показано ниже ( он выберет тэг, значение атрибута href которого начинается с website/report/download.json):

Public Sub ClickTest()

    Dim ie As Object

    Set ie = CreateObject("InternetExplorer.Application")
    With ie
        .Visible = True
        .Navigate2 "<the website url>"

        While .Busy Or .readyState <> 4: DoEvents: Wend

        ie.Document.querySelector("a[href^='website/report/download.json']").Click

    End With
End Sub

Кроме того, вы также можете найти тэг, используя метод getelementsbytagname, а затем с помощью for для l oop через результат и в соответствии со свойством innerText найти специальную ссылку. Наконец, щелкните по нему.

Редактировать

Вы можете проверить следующий код:

Public Sub ClickTest()

    Dim ie As Object    
    Dim itemlist As Object  'Define a object to store the a tag list.

    Set ie = CreateObject("InternetExplorer.Application")
    With ie
        .Visible = True
        .Navigate2 "<the website url>"

        While .Busy Or .readyState <> 4: DoEvents: Wend

        'ie.Document.querySelector("a[href^='website/report/download.json']").Click

        Set itemlist = ie.document.getElementsByTagName("a")

        'Debug.Print itemlist.Length  ' check the count of a tag

        If Len(itemlist) > 0 Then
            'using For Each statement to loopthough the a tag list.
            For Each Item In itemlist
                'Debug.Print Item.innerText  ' check the value
                'If the value is "GeneralExtract.xlsx", click the link and exit the for statement.
                If Item.innerText Like "GeneralExtract.xlsx" Then
                    Item.Click
                    Exit For
                End If
            Next Item
        End If

    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...