我尝试了一些事情,例如在行代码之前等待1到10秒钟,问题为“ Html.querySelector(“ a [href ='#tab-import']”)。单击“停止的地方”或添加“循环” ”,直到页面收费为止,但我不知道为什么它只能在调试模式下工作。
HTML来源:
<a href="#tab-import" data-toggle="tab">Import</a>
错误是91:未设置对象变量。
我的代码具有明确的凭据
Sub Direnet()
Dim ieApp As InternetExplorer
'create a new instance of ie
Set ieApp = New InternetExplorer
'you don’t need this, but it’s good for debugging
ieApp.Visible = True
'go to the page we want
ieApp.Navigate "http://direnetdemos.com/casagarza-op/admin/index.php?route=tool/export_import&token=9reP7LOHg0SMChCYFBbcLPoQSjiQ72W1"
Do While ieApp.Busy: DoEvents: Loop
Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop
With ieApp
.document.all.Item("input-username").Value = "xxxx"
.document.all.Item("input-password").Value = "xxxx"
.document.forms(0).submit
Do While ieApp.Busy: DoEvents: Loop
Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop
'Click en pestaña Import
Dim Html As HTMLDocument
Set Html = ieApp.document
Application.Wait (Now + TimeValue("0:00:02"))
Html.querySelector("a[href='#tab-import']").Click
Html.querySelectorAll("input[name='incremental']")(1).Click
Html.querySelector("input[id='upload']").Click
Html.querySelector("a[onclick='uploadData();']").Click
End With
End Sub
答案 0 :(得分:0)
每次单击某些内容时,都应等待浏览器再次“就绪”:
Html.querySelector("a[href='#tab-import']").Click
Do
DoEvents
Loop Until Not ieApp.Busy And ieApp.ReadyState = READYSTATE_COMPLETE
Html.querySelectorAll("input[name='incremental']")(1).Click
Do
DoEvents
Loop Until Not ieApp.Busy And ieApp.ReadyState = READYSTATE_COMPLETE
Html.querySelector("input[id='upload']").Click
Do
DoEvents
Loop Until Not ieApp.Busy And ieApp.ReadyState = READYSTATE_COMPLETE
Html.querySelector("a[onclick='uploadData();']").Click
Do
DoEvents
Loop Until Not ieApp.Busy And ieApp.ReadyState = READYSTATE_COMPLETE
此外,请勿将Application.Wait
用于此类操作-实际上,它只是冻结代码执行给定时间。它不允许事件处理或与浏览器的就绪状态有任何形式的链接。
答案 1 :(得分:0)
好吧,终于在几行之后移动了该行代码“ IE.Visible = True”。非常感谢你们。