Forms 通过VBS进行表单操作-第一次选择后需要更新表单

Forms 通过VBS进行表单操作-第一次选择后需要更新表单,forms,vbscript,asp-classic,web-scraping,refresh,Forms,Vbscript,Asp Classic,Web Scraping,Refresh,我创建了一个脚本,开始做我需要的事情。此脚本与初始表单交互 我可以填写表格并提交,但它有错误 进一步检查后,在第一个下拉字段中进行选择后,应使用更新的下拉选项刷新表单 对于我的代码,它不允许在进行第一次选择后刷新表单。以下是我的工作代码: set ie = createobject("internetexplorer.application") Set objShell = CreateObject("WScript.Shell") ie.navigate "https://www.myfl

我创建了一个脚本,开始做我需要的事情。此脚本与初始表单交互

我可以填写表格并提交,但它有错误

进一步检查后,在第一个下拉字段中进行选择后,应使用更新的下拉选项刷新表单

对于我的代码,它不允许在进行第一次选择后刷新表单。以下是我的工作代码:

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 

您提供的链接所指向的网页包含函数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 ...

顺便说一句,有两种数据web抓取方法:与正在实现的IE交互,或者通过HTTP请求获取数据并对其进行解析。第一个是明显的,但不可靠,你知道,即沉重,缓慢,有时用户设置和旧的cookies会影响工作流程。第二个设置更复杂,需要技能,但不需要IE,因此没有IE的缺点。

我的问题有意义吗?我很高兴澄清。蒂亚!欧米茄-我可以拥抱你!我必须去100个链接试图找到这个答案。你让我明白了我到底需要什么。非常感谢。我完全明白你所说的HTTP请求是这两个选项中最理想的一个。我想说IE是我目前的技能水平,但你的帖子正在帮助我学习如何使用HTTPrequests。我试图在下一页上使用你的方法单击next,但我不能完全理解你的方法。你能帮我理解吗?看来这应该行得通。代码:直到IE.Document.ReadyState=complete为止:WScript.sleep 10:Loop Set Form=IE.Document.FormsreportForm Form.ChangePagesAction.Value=4 Form.returntrue。Form.ChangePage对象上出错不支持此属性或方法。我意识到ChangePagesAction中的值。值=4与上一个示例中的值不同。已尝试Form.hPageAction.value=4,但失败。我想我需要两者的结合…没关系-这不是最性感的方式:对于IE.Document.getElementsByTagNameinput中的每个btn,如果btn.name=SearchForward和btn.value=Search,那么点击