#html #excel #vba #internet-explorer
Вопрос:
Это та часть, на которой я застрял, все остальное работает.
Sub Avidie()
Dim i As Long
Dim url As String
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
Set links = .document.getelementbyclass("invoice-number-hyperlink").getelementsbyname("25407")(0).Click
Я дошел до того, что у меня есть код веб-страницы, который приведен ниже, и я хочу, чтобы мой код нашел ссылку с этим классом и именем и щелкнул по ней. Как я могу это исправить?? Название класса совпадает во многих частях этой страницы, но я ищу именно это название, поэтому мне нужно найти его по этому.
<a class="invoice-number-hyperlink" onclick="avid.navigateHelper['PAQ-Invoice'](this);" href="#/invoices/70c2373a-ac71-43f2-a9e0-8d0332f1a19b?fromQueue=true">25407</a>
Комментарии:
1. Попробуй
getElementsByClassName("invoice-number-hyperlink")(0).click
2. Таким образом, существует несколько ссылок с этим именем класса. Мне нужно сделать это, используя имя.
3. У
a
тега, который вы перечислили, нетname
свойства, значение25407
, скорее всего, является внутренним текстом привязки. Вы можете зациклиться на элементе с классомinvoice-number-hyperlink
и проверить значение свойства innerText.4. Является ли строка
PAQ-Invoice
уникальной для ссылки, по которой вы хотите перейти? Какие части отображаемого html уникальны для ссылки для перехода? Всегда ли ссылка находится в определенной позиции, например, 2-я ссылка в родительском теге?5. @RyanWildry извините, я ТАК новичок в VBA idk, на что вы ссылаетесь, НО 25407-это внутренний текст… не могли бы вы, пожалуйста, сообщить мне, какие вещи, по вашему мнению, я должен изменить?
Ответ №1:
Основываясь на части предоставленного вами кода, а также на методах, упомянутых другими членами сообщества, вы можете просмотреть все подходящие s в соответствии с классом, отфильтровать в соответствии с текстовым содержимым, а затем выбрать и щелкнуть. Я создал простой пример, надеюсь, он может быть вам полезен:
Dim appIE As InternetExplorerMedium
Set appIE = New InternetExplorerMedium
sURL = "https://www.example.com/"
With appIE
.navigate sURL
.Visible = True
End With
Do While appIE.Busy Or appIE.readyState <> 4
DoEvents
Loop
'appIE.document.getElementsByClassName("invoice-number-hyperlink")(0).Click
For Each link In appIE.document.getElementsByClassName("invoice-number-hyperlink")
If link.Text = "25407" Then
link.Click
Exit For
End If
Next
И страница:
<a class="invoice-number-hyperlink" onclick="window.alert('jump to google...')" href="https://www.google.com/">25407</a>