【问题标题】:Problem inserting value into "Input" field将值插入“输入”字段时出现问题
【发布时间】:2019-06-11 05:22:38
【问题描述】:

我在尝试自动将数据插入网站时遇到了一个奇怪的问题。特别是一个input 字段,这是该网站的html:

<input class="maskAcctNbr" id="masked_consumer" type="text" size="20" maxlength="20" value="" autocomplete="off">

当我将使用此代码在该字段中插入值并单击“查找”按钮时:

Dim SE As MSHTML.IHTMLElement
Set SE = HTMLDoc.getElementById("masked_consumer")
SE.Value = "574844"

页面告诉我我缺少信息。

在我手动单击该字段并输入该数字后,底层 html 代码更改为:

<input class="maskAcctNbr" id="masked_consumer" type="text" size="20" maxlength="20" value="" autocomplete="off" real="574844">

新的real 属性出现。 有什么想法可以使用 VBA 解决这个问题吗?我尝试了clickfocus,但没有任何效果,直到我使用鼠标单击该字段并手动输入该数字。

谢谢!

【问题讨论】:

  • 可以分享一下网址吗?
  • @QHarr 不幸的是它不是公开的。

标签: vba internet-explorer


【解决方案1】:

尝试参考下面的示例可能会帮助您解决问题。

例子:

Sub demo()

Dim IE As Object

Set IE = CreateObject("InternetExplorer.Application")

IE.navigate "http://example.com"

IE.Visible = True

While IE.Busy

DoEvents

Wend

Set TrackID = IE.document.getElementById("masked_consumer")
TrackID.Focus

Application.SendKeys ("(574844)"), True
Application.SendKeys ("{ENTER}"), True


End Sub

【讨论】:

  • 我收到Run-time error '-2147352319 (80020101)' Automation error...
  • 这一行:ie.document.parentWindow.execScript "handleKeyDown({which:13, preventDefault:function(){}});"
  • 它有效,但我真的希望不要使用SendKeys,我将它与AppActivate "Internet Explorer"结合使用。如果没有人想出不涉及该命令的东西,我会将其标记为已回答!谢谢你的帮助!
  • 实际上我们并不知道您的网页上有哪些事件和函数会在您输入数据时执行。所以我们很难猜测和测试它。如果您提供任何可以复制问题的样本,我们可以尝试使用它进行一些测试。
【解决方案2】:

我曾经遇到过类似的问题,激活该字段的 .OnClick 事件有所帮助。 在你的情况下,它会是 SE.onclick 在设置值之前。 也可能有一些其他事件,例如 OnChange,在未触发时可能会导致“未输入数据”错误。 祝你好运:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 2020-08-05
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多