Как использовать querySelector для нажатия кнопки в VBA - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь использовать querySelector (). Нажмите, чтобы нажать кнопку в браузере.

Вот код HTML:

<td tabindex="0" title="Company" class="Smell" role="grid" data-table-header="some header">
    <div class="classroom">
        <div class="first inner classroom">
            <div class="second inner classroom">
                <div class="third inner classroom">

                    <a title="QUERYSELECTOR HERE" class="btn-link" href="/Tosomewhere/here/andthere/111">I'm not trying to grab an inner value because other tables have same inner value</a>

                </div>
                <div class="different sub-classroom">
                    <span class="some span">Mrs. Crobapole</span>
                </div>
            </div>
        </div>
    </div>
</td>

Вот что я попробовал:

ie.Document.getElementById("Input Simpson").Value = ActiveCell.Value
ie.Document.getElementById("Some button for Simpson").Click
    Do
    DoEvents
    Loop Until ie.ReadyState = 4

ie.Document.querySelector("[title='QUERYSELECTOR HERE']").Click
    Do
    DoEvents
    Loop Until ie.ReadyState = 4

Это сообщение об ошибке, которое я получаю:

Run-time error '424': Object required

Отладка выделяет эту часть кода

ie.Document.querySelector("[title='QUERYSELECTOR HERE']").Click

Да, я присвоил имя объекта, и его предыдущие коды работают отлично. Но если я нажимаю кнопку «отладка» и снова запускаю код, он работает странно.

1 Ответ

1 голос
/ 07 мая 2019

попробуйте перехватить объект по индексу тега. В вашем регистре тегов <a> вы можете циклически переключаться между html-элементами, чтобы получить нужный элемент в соответствии с атрибутом вашего регистра title="QUERYSELECTOR HERE";этот код проходит между <a> тегами внутри ("td")(0) и ищет атрибут заголовка.

Dim MyHtmlTable As Object

MyHtmlTable = ie.document.getElementsByTagName("td")(0)
For i = 0 To MyHtmlTable.All.tags("a").Length - 1
If MyHtmlTable.getElementsByTagName("a")(i).getAttribute("Title") = "QUERYSELECTOR HERE" Then
    MyHtmlTable.getElementsByTagName("a")(i).Click
    Do
    DoEvents
    Loop Until ie.readyState = 4
Exit For
End If
Next i

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...