Судя по вашему коду и веб-сайту, вам нужно открыть несколько вкладок (с одним и тем же URL), а затем ввести значение в текстовое поле. Следует обратить внимание на следующий момент:
- Как получить доступ к элементам веб-страницы.
- Как переключать вкладки и фокусироваться на новой вкладке.
Чтобы получить доступ к элементам веб-страницы, из ресурса веб-страницы (используйте инструменты разработчика F12, чтобы проверить это), я заметил, что таблица содержит 6 строк, но последняя строка не содержит элемент ввода. Итак, используя ваш код, я не могу найти элемент ввода. Я обнаружил, что входные элементы содержат свойство класса. Итак, я предлагаю вам использовать метод getElementsByClassName для поиска элемента.
Чтобы переключить вкладку IE в браузере, мы могли бы l oop просмотреть открытые вкладки и сравнить URL, а затем установить фокус на соответствующей вкладке.
Более подробные шаги, пожалуйста, проверьте следующий пример кода:
Sub Test1()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
Dim intRow As Integer
For intRow = 1 To 3
If intRow = 1 Then
With IE
.Visible = True
.navigate "https://gru.inpi.gov.br/pePI/jsp/patentes/PatenteSearchBasico.jsp"
Do While IE.Busy Or IE.readyState <> 4
Application.Wait DateAdd("s", 1, Now)
Loop
Set doc = IE.document
IE.document.getElementsByClassName("basic")(0).Value = "intRow" & intRow
Application.Wait DateAdd("s", 3, Now)
End With
Else
With IE
.Visible = True
.navigate "https://gru.inpi.gov.br/pePI/jsp/patentes/PatenteSearchBasico.jsp", 2048&
Do While IE.Busy Or IE.readyState <> 4
Application.Wait DateAdd("s", 1, Now)
Loop
Application.Wait DateAdd("s", 3, Now)
Set IE = GetIE("https://gru.inpi.gov.br/pePI/jsp/patentes/PatenteSearchBasico.jsp")
Application.Wait DateAdd("s", 3, Now)
IE.document.getElementsByClassName("basic")(0).Value = "intRow" & intRow
End With
End If
Next
End Sub
Function GetIE(sLocation As String) As Object
Dim retVal As Object
Dim my_url As String, my_title As String
Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
'loop through the window and find the tab
For x = 0 To (IE_count - 1)
On Error Resume Next
'get the location and title
my_url = objShell.Windows(x).document.Location
my_title = objShell.Windows(x).document.Title
'debug to check the value
Debug.Print x
Debug.Print my_url
'find the special tab based on the title.
If my_url Like sLocation Then
Set retVal = objShell.Windows(x)
'IE.Quit 'call the Quit method to close the tab.
'Exit For 'exit the for loop
Else
End If
Next
Set GetIE = retVal
End Function
После запуска вышеуказанного скрипта откроются три вкладки и заполнится значение в тексте ввода Login. См. Следующий снимок экрана:
Ссылка:
Общие методы и свойства VBA, используемые в веб-автоматизации