Войдите на сайт и нажмите кнопку - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть проблема с debug.print. Хотя я активировал Window (STR + G), debug.print не отображается. Почему я хочу увидеть результат печати отладки? Итак ... Я хочу выяснить, какую кнопку мне нужно активировать, используя код VBA. В моем случае у меня есть 3 варианта Поиск, новый поиск, go назад или Вход в систему. Я нашел решение для другой веб-страницы. TestLogin () Dim ... Dim LoginForm As MS HTML .HTMLFormElement .. code LoginForm.submit

В указанном случае c код здесь почти такой же

Sub Get () Dim ... Dim HTML Кнопка AS MS HTML .IHTMLELEMENT ... Код

Установить кнопки = HTMLDo c .GetElementsByTagName ("кнопка") для каждой кнопки HTML в кнопках HTMLButtons Debug.Print HTMLButton.className, HTMLButton.tagName, HTMLButton.Id, HTMLButton.innerText Следующая кнопка

End Sub

В этом случае код выполняется до строки Set Buttons = HTMLDo c .GetElementsByTagName ( «кнопка»), и он переходит к End Sub

Здесь мой код и исходный код веб-сайта с кнопками для запуска по VBA

Sub Search()
Dim IE As New SHDocVw.InternetExplorer
    Dim HTMLDoc As MSHTML.HTMLDocument

    Dim HTMLButtons As MSHTML.IHTMLElementCollection
    Dim HTMLButton As MSHTML.IHTMLElement

    Dim HTMLInput As MSHTML.IHTMLElement
    Dim HTMLElement  As Object



   Dim UserNameInput As MSHTML.HTMLInputElement
   Dim VornameInput As MSHTML.HTMLInputElement


   Set IE = New SHDocVw.InternetExplorer
   Set IE = CreateObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")


IE.Visible = True
IE.Navigate Tabelle1.Range("B1").Text




Do While IE.ReadyState <> READYSSTATE_COMPLETE And IE.Busy
Loop


 Set HTMLDoc = IE.Document




   Application.Wait (Now + TimeValue("0:00:1"))

    Set HTMLInput = HTMLDoc.getElementById("sur")
    HTMLInput.Value = "HI"


    Set HTMLInput = HTMLDoc.getElementById("given")
     HTMLInput.Value = "Low"

      Application.Wait (Now + TimeValue("0:00:1"))


     Stop

    Here I tried the Debug.Print .. But it does not work

     For Each HTMLButtons In HTMLDoc
       Debug.Print HTMLButton.className, HTMLButton.tagName, HTMLButton.ID, HTMLButton.innerText
     Next IHTMLButton

   Than I tried This code.. and it also does not work

    Set HTMLButtons = HTMLDoc.getElementsByTagName("btn")
    Set HTMLButtons = HTMLDoc.getElementsByClass("urTxtStd").Value("Suchen")
    HTMLButton.Click

End Sub

Здесь исходный код с веб-сайта У меня есть 3 кнопки

Поиск новых Поиск назад

Исходный код кнопки поиска

<table id="btn" onclick="triggerDetailedSearch();" cellspacing="0"><tbody><tr style="vertical-align: bottom;"><td class="tl o"><td class="tr o"></tr><tr><td class="bl o">&nbsp;</td><td class="br o"><b class="urTxtStd">Suchen</b></td></tr></tbody></table>

<b class="urTxtStd">Suchen</b>

Source Code (New Search) 
<b class="urTxtStd">Neue Suche</b>

Source Code (Back)
<b class="urTxtStd">Zurück</b>

And for all 3 Buttons

SEARCH

<table id="btn" onclick="triggerDetailedSearch();" cellspacing="0"><tbody><tr style="vertical-align: bottom;"><td class="tl o"><td class="tr o"></tr><tr><td class="bl o">&nbsp;</td><td class="br o"><b class="urTxtStd">Suchen</b></td></tr></tbody></table>

New Search
<table id="btn" onclick="resetDetailedSearchForm();" cellspacing="0"><tbody><tr style="vertical-align: bottom;"><td class="tl lg"><td class="tr lg"></tr><tr><td class="bl lg">&nbsp;</td><td class="br lg"><b class="urTxtStd">Neue Suche</b></td></tr></tbody></table>

BACK
<table id="btn" onclick="goBack();" cellspacing="0"><tbody><tr style="vertical-align: bottom;"><td class="tl lg"><td class="tr lg"></tr><tr><td class="bl lg">&nbsp;</td><td class="br lg"><b class="urTxtStd">Zurück</b></td></tr></tbody></table>

Что я пропустил? Спасибо за любую помощь Для всех вас, пожалуйста, будьте здоровы! Пит

1 Ответ

0 голосов
/ 17 апреля 2020

Я пытаюсь сослаться на ваше описание и понимаю, что на веб-странице есть три кнопки: Поиск , Новый поиск и Назад . Вы хотите нажать на эти кнопки. в настоящее время вы пытаетесь l oop с помощью кнопок и извлекать значения его атрибутов.

Вы сказали, что приведенный ниже код не работает.

 For Each HTMLButtons In HTMLDoc
       Debug.Print HTMLButton.className, HTMLButton.tagName, HTMLButton.ID, HTMLButton.innerText
 Next IHTMLButton

Я пытаюсь проверить ваш код HTML и обнаружил, что упомянутые вами кнопки созданы с использованием Таблица элемент вместо фактического HTML кнопка элемент. По этой причине ваш код не работает.

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

     Dim tbl As MSHTML.HTMLTable
     For Each tbl In IE.document.getElementsByTagName("table")

       Debug.Print tbl.className, tbl.tagName, tbl.ID, tbl.innerText
     Next

Вывод:

enter image description here

Еще одна вещь, которую я заметил, что все таблицы имеют одинаковое значение атрибута ID, которое составляет btn

Я предлагаю вам проверьте имя функции, упомянутое в onclick , чтобы нажать определенную кнопку, используя код VBA.

Пример кода:

 With IE.document

         For Each e In .getElementsByTagName("table")
            If (e.getAttribute("onclick") = "triggerDetailedSearch();") Then
                e.Click
                Exit For
            End If
        Next e

    End With

Кроме того, вы можете попробовать изменить код в соответствии с вашими требованиями.

...