我为BEGIN创建了一个脚本来完成我需要的操作。此脚本与初始表单交互。
我可以填写表格并提交,但是错误。
进一步检查后,在第一个下拉字段中进行选择后,表单应该刷新并显示更新的下拉选项。
使用我的代码,在第一次选择后,它不允许表单刷新。这是我有点工作的代码:
set ie = createobject("internetexplorer.application")
Set objShell = CreateObject("WScript.Shell")
ie.navigate "https://www.myfloridalicense.com/wl11.asp?Mode=1&SID=&brd=&typ="
ie.Visible = True
do until ie.readystate = 4 : wscript.sleep 10: loop
IE.Document.getElementsByTagName("select")("Board").Value = "25"
do until ie.readystate = 4 : wscript.sleep 10: loop
IE.Document.getElementsByTagName("select")("County").Value = "11"
IE.Document.getElementsByTagName("select")("RecsPerPage").Value = "50"
For Each btn In IE.Document.getElementsByTagName("input")
If btn.type = "image" Then btn.Click()
Next
我的问题是 - 如何在第一次选择后允许表单更新?第一个选择是:
IE.Document.getElementsByTagName("select")("Board").Value = "25"
我尝试添加此项,但没有骰子:
do until ie.readystate = 4 : wscript.sleep 10: loop
答案 0 :(得分:0)
您提供的链接所包含的网页包含function DDChange()
,第一个和第二个表单字段与onchange
事件相关联。但由于某些原因,在更改字段后不调用此函数。所以我已经在脚本中添加了与函数相同的操作,以及一些额外的循环来获取完整的文档状态。以下是第一个字段更改后表单更新代码的一部分,它对我来说没问题:
Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate "https://www.myfloridalicense.com/wl11.asp?Mode=1&SID=&brd=&typ="
Do Until IE.ReadyState = 4: WScript.sleep 10: Loop
IE.Document.getElementsByTagName("select")("Board").Value = "25"
' see function DDChange() {} for details
Set Form = IE.Document.Forms("reportForm")
Form.hDDChange.Value = "Y"
Form.Submit
Do Until IE.ReadyState = 4: WScript.sleep 10: Loop
' additional loop to check doc state
Do Until IE.Document.ReadyState = "complete": WScript.sleep 10: Loop
WScript.Echo IE.Document.getElementsByTagName("select")("LicenseType").OuterHtml
' the rest part of your code here ...
BTW,有两种数据网络抓取方法:与IE交互(您正在实现),或通过HTTP请求获取数据并解析它。第一个是明显的,但不可靠(你知道,IE很重,很慢,有时用户设置和旧cookie会影响工作流程)。第二个是设置更复杂,需要技能,但不需要IE,所以它没有IE的缺点。