Ввод значения в текстовое поле веб-формы с помощью VBA работает на экране, но данные фактически не вводятся в текстовое поле. - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть некоторый код, который отлично работает для ввода данных через Excel / VBA в веб-формы.

У меня он работает на других сайтах, но на этом сайте данные «вводятся» в текстовое поле, как я вижу это на экране.

Но если я затем нажму на текстовое поле, данные исчезнут.Аналогичным образом, если я нажимаю кнопку «Отправить» в форме, я получаю сообщение об ошибке, в котором говорится, что текстовые поля пусты (хотя на экране их нет).

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

К вашему сведению, я использую упрощенный код, где IE - это объект Internet Explorer:

IE.document.all("EntryField_hdn_547").Value = "My Name"

Это URL-адрес формы: https://public -online.hmrc.gov.uk / lc / content / xfaforms / Profiles / forms.html? ContentRoot = хранилище: ///Applications/NICs_iForms/1.0/CA3822&template=CA3822.xdp

(вам нужно перейти на 3-ю страницу и щелкнуть радио "Работодатель", чтобы увидеть текстовые поля)

И это HTML, например, приведенного выше поля ввода текста:

<input type="text" class="i" name="EntryField_hdn_547" tabindex="1469" aria-label="Name" style="text-align: left; vertical-align: middle; text-indent: 0px; padding: 0px 5.67px; height: 34.0157px; box-sizing: border-box; position: absolute; width: 566.93px;">

Может кто-нибудь помочь предложить способ «прикрепить» данные в текстовых полях

(к вашему сведению, у меня также есть код, чтобы нажимать переключатели, и это прекрасно работает)

Кроме того, я попробовал этот ответ, который кажется очень похожим, но все еще не радует: Текст введен в WПоле поиска ebpage через Excel VBA не обнаруживается при нажатии кнопки поиска

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Ссылка QHarrs дала ответ - с помощью SendKeys вместо этого я мог ввести данные в виде текста в текстовые поля.

Сначала мне нужно было установить фокус на IE - я использовал информацию здесь, чтобы получить этот битотсортировано: Установить фокус на объект Internet Explorer в Visual Basic

, т.е.

myIE.visible = false
DoEvents
myIE.visible = true 
0 голосов
/ 23 ноября 2018

Это невероятно легко с селеном базовым .После установки перейдите в VBE> Инструменты> Ссылки> Добавить ссылку на библиотеку типов селена.

Option Explicit
Public Sub EnterInfo()
    Dim d As WebDriver
    Set d = New ChromeDriver
    Const url = "https://public-online.hmrc.gov.uk/lc/content/xfaforms/profiles/forms.html?contentRoot=repository:///Applications/NICs_iForms/1.0/CA3822&template=CA3822.xdp"

    With d
        .Start "Chrome"
        .get url
        .Window.Maximize
        '.ExecuteScript "window.scrollTo(0, document.body.scrollHeight);"
        .FindElementByCss(".S").Click
        .FindElementByCss("#_hdn_30 > div._.widget.buttonfieldwidget.xfaButton").Click
        .FindElementByCss("[aria-label=employer]").Click
        .FindElementByCss("[aria-label=Name]").SendKeys "Wile E. Coyote"
        .FindElementByCss("[aria-label='Name of company']").SendKeys "Acme Corporation"
        .FindElementByCss("[aria-label='Position in company']").SendKeys "Entrepreneur"
        .FindElementByCss("[aria-label='Telephone number']").SendKeys "012345678910"
        .FindElementByCss("[tabindex='1511']").Click
        .FindElementByCss("[tabindex='1537']").Click
        .FindElementByCss("#_hdn_653 > div._.widget.buttonfieldwidget.xfaButton").Click

         Stop

        .Quit
    End With
End Sub
...