【问题标题】:Trouble with entering fields on a webpage via VBA通过 VBA 在网页上输入字段时遇到问题
【发布时间】:2020-08-28 21:47:51
【问题描述】:

我正在 Excel 中创建一个工具,它将浏览网页并挑选出一些数据(想法是能够在需要时点击此按钮并获取更新的数据)

但我无法通过登录页面。

这是我的代码(我已取出网页并登录详细信息)

`Private Sub GoButton_Click()

Dim myURL As String
Dim IE As Object
Dim doc As htmlDocument

myURL = "www.myWebPage"
Set IE = CreateObject("InternetExplorer.Application")

With IE
    .Visible = True
    .Navigate myURL

    Do Until .READYSTATE = 4: DoEvents: Loop
    Set doc = IE.document

    Call findObjectToClick("cmdSubmit") 'Click on Log in Button

    Do Until .READYSTATE = 4: DoEvents: Loop
    Set doc = IE.document

    doc.getElementsByName("email")(0).Value = "myEmailAddress@test.com" 'enter email
    doc.getElementsByName("password")(0).Value = "myPassword" 'enter password
    doc.getElementsByName("submit")(0).Click 'click log in

End With

结束子`

第一部分一切正常,它加载主页并单击登录按钮并进入登录页面。

它会更新登录页面上的值。

Log In Page filled in

但是当它执行点击时,页面的行为就像用户名和密码字段是空白的一样,如果我点击网页(通常不是通过 vba),这些字段会变成空白,我的用户名和密码也会消失

Log In Page after code tries to click Log In Button

我尝试在网上寻找解决方案,这似乎是一个常见问题,但我一直无法找到解决方法。

我尝试在为字段分配值后放置此代码,但这没有帮助

Set evt = IE.document.createEvent("keyboardevent")
evt.initEvent "change", True, False
doc.getElementsByName("email")(0).dispatchEvent evt

有什么建议吗?这是我项目中最简单的部分。

【问题讨论】:

  • 我相信你是在正确的方式。您必须为输入字段触发一些 html 事件。您必须知道事件的名称。要触发事件,您可以使用我在此帖子中的答案stackoverflow.com/questions/61680941/… 中的过程TriggerEvent() 您使用Call TriggerEvent(browser.document, nodeSelect, "change") 行触发事件唯一要做的就是设置您自己的参数。如果你不能让它工作,你必须发布网址。如果他们使用 jQuery,它可能会失败。试试看:-)
  • 谢谢 Zwenn,我会看看你的答案并试一试我现在使用 Selenium 插件取得了一些成功,但肯定也会看看你的

标签: html excel vba


【解决方案1】:

如果其他人遇到此问题,仅供参考。

我设法通过使用 selenium 插件解决了这个问题。 它比我上面使用的方法更好地模仿按钮按下

引用此页面中发布的答案 Unable to enter Username and password in webpage using VBA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2018-12-09
    • 2021-01-09
    相关资源
    最近更新 更多