下面是简单的 IE 自动化代码,只需输入订单号,例如1413105088
和邮政编码始终是78759
并单击“提交”按钮,然后从结果页面中获取跟踪号码,例如017136295201034
并将它们放入 C 列。
它按预期工作,但由于 IE 不太可靠且缓慢,我想知道是否有更快的方法来完成此过程,如果没有,我可以使其至少可靠,以便单击提交按钮后不会失败,这意味着这
Do While IE.Busy Or IE.ReadyState <> 4
DoEvents
Loop
after
.document.getElementsByClassName("button_text")(3).Click
失败,因为它并没有真正检查 ie 页面是否已完成加载。
我问这个问题是因为我必须对数百个此类请求执行此操作。提前致谢。
完整代码:
Sub test()
Dim urL As String, orderNum As String
Dim trackingNum, prodDetail, cet
Dim i As Long, fI As Long
Dim IE
urL = "https://fisher-price.mattel.com/webapp/wcs/stores/servlet/OrderStatusGuestView?catalogId=10101&langId=-1&storeId=10151&krypto=prThs8zyeWG0bkF9ajSr%2FCnzmv1TKodtTEw0EdXtC7NjEmfD3cb6Z75umdkcXCiEPFxvkd0TfHkOswm3ZcMp8sbrU2doZFa6TxVbI%2BW1Lzk%3D"
fI = MAIN.Range("B" & Rows.Count).End(xlUp).Row
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True
For i = 2 To fI
orderNum = Trim(MAIN.Range("B" & i).Value) 'Sample ordernum = 1413105088
If orderNum <> "" Then
.navigate urL
Do While IE.Busy Or IE.ReadyState <> 4
DoEvents
Loop
.document.getelementbyid("orderNumber").Value = orderNum
.document.getelementbyid("postalCode").Value = 78759
.document.getElementsByClassName("button_text")(3).Click
Application.Wait Now + TimeValue("00:00:02")
Do While IE.Busy Or IE.ReadyState <> 4
DoEvents
Loop
prodDetail = .document.getElementsByClassName("productDetails")(0).innerText
If InStr(prodDetail, "Tracking :") > 0 Then
cet = Split(prodDetail, "Tracking :")
trackingNum = Trim(cet(1))
MAIN.Range("C" & i).Value = trackingNum
Else
MAIN.Range("C" & i).Value = "N/A"
End If
End If
Next i
End With
IE.Quit
Set IE = Nothing
End Sub
即使我也遇到了这个问题Do While... Loop
没有正确加载,所以我使用了下面的代码
x = 0
Do until x = 1
if IsObject(.document.getelementbyid("orderNumber")) Then
.document.getelementbyid("orderNumber").Value = orderNum
.document.getelementbyid("postalCode").Value = 78759
.document.getElementsByClassName("button_text")(3).Click
x = 1
Else
Application.Wait Now + TimeValue("00:00:02")
End if
Loop
Working:
Since x=0
它将进入循环内部,因为IsObject(.document.getelementbyid("orderNumber"))
未找到,因此它将等待两秒,循环将继续,直到找到订单号,否则它将将该值设为x=1
并退出循环。
注意:如果您的代码不起作用,那么该代码将永远运行。您可以为此设置循环限制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)