在屏幕上可以使用VBA在Webform文本框中输入值,但实际上没有在文本框中输入数据

时间:2018-11-22 15:19:06

标签: html vba webforms inputbox

我有一些代码可以很好地通过Excel / VBA将数据输入到Web表单中。

我在其他站点上都可以使用它,但是在这个站点上,数据被“输入”到文本框中,正如我在屏幕上看到的那样。

但是,如果我再单击文本框,数据就会消失。同样,如果我单击表单上的“提交”,则会收到一个错误消息,指出文本框为空(即使在屏幕上不是)。

正如我所说,我拥有的代码可以在其他网站上使用,因此它必须与我正在使用的网站有关。

仅供参考,这是我正在使用的简化代码,其中IE是Internet Explorer对象:

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

这是表格的网址: https://public-online.hmrc.gov.uk/lc/content/xfaforms/profiles/forms.html?contentRoot=repository:///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;">

任何人都可以帮助建议一种将数据“粘贴”到文本框中的方法

(仅供参考,我也有单击单选按钮的代码,效果很好)

此外,我尝试了这个答案,该答案似乎非常相似,但仍然不令人满意: Text entered into Webpage Search Box via Excel VBA is not detected when clicking Search button

2 个答案:

答案 0 :(得分:2)

使用selenium basic可以轻松实现。安装后,转到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

答案 1 :(得分:1)

QHarrs链接提供了答案-通过使用SendKeys,我可以将数据作为文本输入到文本框中。

我确实需要首先将焦点设置为IE-我使用这里的信息来进行排序: Set Focus to Internet Explorer Object in Visual Basic

myIE.visible = false
DoEvents
myIE.visible = true