Использование гиперссылки не очень хороший способ. Вы хотите программно взаимодействовать с веб-страницей, поэтому вам нужен автоматический браузер. IE работает просто отлично. Я предполагаю, что это опечатка, где вы пишете internet explorer.Application
как InternetExplorer.Application
.
Примечание: я показываю код для поиска браузера по умолчанию в конце, если вы решите написать разветвленный код для разных браузеров, установив selenium basic.
У вас должно быть правильное ожидание загрузки страницы
While .Busy Or .readyState < 4: DoEvents: Wend
после нажатия кнопки отправки, но здесь вы также можете отслеживать одно из свойств страницы на предмет изменения, указывающего, что загрузка завершена (изменение атрибута стиля)
Internet Explorer:
Option Explicit
'VBE > Tools > References:
' Microsoft Internet Controls
'
Public Sub UseIE()
Dim ie As New InternetExplorer
With ie
.Visible = False
.Navigate2 "https://sellercentral.amazon.com/hz/fba/profitabilitycalculator/index?lang=en_US"
While .Busy Or .readyState < 4: DoEvents: Wend
.document.getElementById("search-string").Value = "1408893339"
.document.querySelector("#a-autoid-1 .a-button-input").Click
'While .Busy Or .readyState < 4: DoEvents: Wend
Do
Loop While .document.querySelector("#searchProduct").Style = "display: block;"
Debug.Print .document.querySelector("#product-info").innerText
Stop
.Quit
End With
End Sub
Другие браузеры, использующие селен:
Если вы хотите использовать альтернативные браузеры, рассмотрите selenium basic vba , который расширяет выбор браузера для Opera, Chrome, FireFox, PhantomJS и других. После установки селен убедитесь, что последний применимый драйвер, например. ChromeDriver.exe находится в папке selenium, затем перейдите в VBE> Инструменты> Ссылки> Добавить ссылку в Selenium Type Library.
Пример селен с хромом:
Option Explicit
Public Sub EnterInfo()
Dim d As WebDriver
Set d = New ChromeDriver
Const URL = "https://sellercentral.amazon.com/hz/fba/profitabilitycalculator/index?lang=en_US"
With d
.AddArgument "--headless"
.Start "Chrome"
.get URL
.FindElementById("search-string").SendKeys "1408893339"
.FindElementByCss("#a-autoid-1 .a-button-input").Click
Do
Loop While .FindElementByCss("#searchProduct").Attribute("Style") = "display: block;"
Debug.Print .FindElementById("product-info").Text
Stop '<==delete me later
.Quit
End With
End Sub
Определение браузера по умолчанию:
Если вы действительно хотите написать какой-то сложный код для определения браузера по умолчанию, вы можете получить подробную информацию о нем из реестра, а затем использовать разветвленный код для запуска соответствующего браузера (если это можно автоматизировать). Вы можете изменить следующий пример быстрого теста на функцию, которая возвращает тип браузера. Вам потребуется установленный селен, чтобы использовать браузеры, отличные от IE.
Примечание: вероятно, есть лучший способ использования ProgID .
Public Sub Test()
Dim defaultBrowserInfo As String, browsers(), i As Long, found As Boolean, browser As String
browsers = Array("Chrome", "InternetExplorer", "FireFox")
defaultBrowserInfo = CreateObject("wscript.shell").exec("cmd /c REG QUERY HKEY_CLASSES_ROOT\http\shell\open\command").StdOut.ReadAll
For i = LBound(browsers) To UBound(browsers)
If InStr(defaultBrowserInfo, browsers(i)) > 0 Then
found = True
browser = browsers(i)
Exit For
End If
Next
If Not found Then
MsgBox "Browser not in list supplied"
Else
MsgBox browser
End If
End Sub
Изменение строки cmd на
REG QUERY HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\As
sociations\UrlAssociations\http\UserChoice
или
REG QUERY HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\As
sociations\UrlAssociations\https\UserChoice
возвращает progId.
Пример возврата:
![enter image description here](https://i.stack.imgur.com/LqjXW.png)
Хотя с использованием C # есть хорошая структура кода здесь .