【发布时间】: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
结束子`
第一部分一切正常,它加载主页并单击登录按钮并进入登录页面。
它会更新登录页面上的值。
但是当它执行点击时,页面的行为就像用户名和密码字段是空白的一样,如果我点击网页(通常不是通过 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 插件取得了一些成功,但肯定也会看看你的