Есть ли способ нажать на переключатель, когда Excel VBA говорит, что его не видно, но на самом деле он виден? - PullRequest
1 голос
/ 05 апреля 2020

Как мне щелкнуть переключатель на веб-странице в форме? Я пытаюсь написать код для автоматизации заполнения формы с помощью Excel VBA. Вот формулировка проблемы: Нужно нажать на один из трех вариантов на странице «https://moverguide.usps.com/mgo/disclaime r» или https://moversguide.usps.com/mgo-m/disclaimer, а именно «Индивидуальный», «Семейный» и « Бизнес ", я получаю следующую ошибку:

Ошибка времени выполнения 11: NoSuchElementErrorElement Невозможно щелкнуть элемент

, когда я использую этот пример кода:

If var = individual or family or business Then
        If obj.FindElementById("move-type-var").IsPresent Then
            obj.FindElementById("move-type-var").Click
        End If

или эта ошибка:

Ошибка времени выполнения 7

NoSuchElementError

при запуске следующего примера кода:

if condition satisfied then
                obj.FindElementByCss ("css=.row--reskin:nth-child(1) .reskin__card:nth-child(1) > .reskin__card--label)")

            End If

Я получил параметр css, извлекая цель css из Firefox. По сути, я записал сценарий с использованием Selenium IDE, чтобы увидеть, что именно происходит, и использовать соответствующее целевое значение для своего решения Excel VBA.

Одно из свойств в консоли IE (F12), когда я вручную проверьте, что исходный код "aria-checked" установлен в флажок / истина. Это происходит, когда я сам нажимаю на один из вариантов. Это то, что я должен включить в коде?

Просто отказ от ответственности: хорошо с Excel VBA в целом, но изучает веб-формы и совершенно новый для этого аспекта.

Инструменты: Selenium webdriver для IE11, MS Excel (офис 365), VBA

1 Ответ

1 голос
/ 05 апреля 2020

Это ярлыки, а не переключатели. Вы можете настроить таргетинг с помощью css attribute = value selectors; где вы объединяете интересующую строку параметра в значение атрибута for. Я использую немного другой стартовый URL, чтобы избежать ненужных шагов.

Dim var As String

'individual, family, business
var = "business"

obj.findElementByCss("[for='move-type-" & var & "']").Click
...