Ссылка на событие onclick для оператора If - IE автоматизация - PullRequest
1 голос
/ 23 сентября 2019

Извинения, если это немного сбивает с толку.Тем не менее, я здесь немного не в себе.У меня есть макрос, который автоматизирует IE.В какой-то момент мой макрос переходит к URL-адресу, который используется для загрузки отчета.URL почти всегда одинаков.Однако одна цифра в ссылке может иногда меняться.Изменяемая цифра в ссылке может быть только 1 или 2.Событие onclick кнопки для получения отчета указывает на то, какой отчет будет создан.В результате мне нужно, чтобы в моем макросе был оператор IF для чтения onclick, и если onclick имеет 1, то он перейдет по ссылке с 1 или если это 2, он перейдет по ссылке с 2.Я предоставил onclick подробности ниже:

Link with 'ReporttypeID=1'

<input name="btnContinue" class="primary" id="btnContinue" onclick="javascript:pop('Splash.aspx?SplashID=3&amp;../Reports/ReportView.aspx&amp;ReporttypeID=1&amp;lang=EN&amp;ruletypeid=5&amp;ruleid=0'); return false;" type="submit" value="Continue">```

Link with 'ReporttypeID=2'

<input name="btnContinue" class="primary" id="btnContinue" onclick="javascript:pop('Splash.aspx?SplashID=3&amp;../Reports/ReportView.aspx&amp;ReporttypeID=2&amp;lang=EN&amp;ruletypeid=5&amp;ruleid=0'); return false;" type="submit" value="Continue">```

Мой код указан ниже, как мне позвонить / сослаться на идентификатор onclick?

Sub login()
    Application.DisplayAlerts = False
    Dim url As String
    url = UserForm.Path2.Value

    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")

    With ie 'Open IE
        .navigate url
        ieBusy ie
        .Visible = False

        ie.navigate "https://mylink.com/ReporttypeID=1" 'Currently navigate to this set link
    'Need IF statement to say if onclick = 1 then go to above link, else if it = 2 then go to the below link
        'ie.navigate "https://mylink.com/ReporttypeID=2"

        ieBusy ie

    End With 'End IE actions

    Application.DisplayAlerts = True
End Sub

1 Ответ

2 голосов
/ 24 сентября 2019

Эти ответы основаны на том, что один или другой всегда присутствуют.

Извлеките атрибут onclick и проверьте, содержит ли он строку "ReporttypeID=1"

If Instr(ie.document.getElementById("btnContinue").getAttribute("onclick"),"ReporttypeID=1")> 0 Then
    'report 1
Else
  'report 2
End If

Альтернативой являетсяиспользуйте css attribute = value селектор с оператором содержимого для проверки длины nodeList

If ie.document.querySelectorAll("[onclick*='ReporttypeID=1']").Length > 0 Then
    'report 1
Else
  'report 2
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...