gpt4 book ai didi

javascript - 如何使用 vba 宏触发特定网页事件

转载 作者:行者123 更新时间:2023-12-04 20:40:32 28 4
gpt4 key购买 nike

首先让我说我对 Web 开发的了解非常有限,所以如果我对这里发生的事情有误,请纠正我。

我想要完成的是复制 this 的手动使用。表格 - 特别是输入邮政编码并按 TAB - 使用 VBA。

我可以创建一个新的 IE 实例并使用此功能导航到页面:

' Get reference to (maybe) already initialized reference
Public Function getSite(url As String) As InternetExplorer
Dim oShell As Object

' curIE is declared as "Private curIE As InternetExplorer" at module level
If curIE Is Nothing Then
Set curIE = New InternetExplorer
curIE.Visible = True
curIE.navigate url
Set oShell = CreateObject("WScript.Shell")

' Probably redundant, could I get some clarification on this?
While (curIE.readyState <> READYSTATE_COMPLETE) Or curIE.Busy ' Wait until it has settled and loaded

Wend

' Maximize the window
Application.Wait Now + TimeValue("00:00:01")
oShell.SendKeys "% "
Application.Wait Now + TimeValue("00:00:01")
oShell.SendKeys "x"
Set getSite = curIE
Else
If curIE.LocationURL <> url Then
curIE.navigate url
End If

Set getSite = curIE
End If
End Function

我可以得到 ZipCode带有此代码段的元素,但我似乎无法执行输入数据的实际工作:
Dim page As HTMLDocument: Set page = getSitePage(curIE.LocationURL) 'Does the work of the GetSite function and gets the document
Dim oShell As Object: Set oShell = CreateObject("WScript.Shell")

Application.Wait Now + TimeValue("00:00:01") 'Seems to help prevent timing issues, is there a better way?

page.getElementsByName("ZipCode").Item(0).Click
oShell.SendKeys "12345{TAB}"

我试过设置 Value该元素的属性并使用 oShell.SendKeys发送选项卡,但是当以这种方式设置其值时,该字段似乎没有获得焦点。这是这里的关键部分,因为当我知道站点可以自行执行查找时,为每个州的每个县创建查找功能太耗时了。

如果有一种方法可以使用 javascript 或任何支持逻辑正在执行我试图触发的功能并且有人可以告诉我如何,那将是伟大的。谢谢!

编辑:这是我尝试与之交互的 ZipCode 字段的来源:
<input name="ZipCode" class="form-control input-lg valid" id="ZipCode" aria-invalid="false" aria-required="true" aria-describedby="ZipCode-error" type="text" placeholder="Zip Code (Required)" value="" data-val-required="Zip Code is required" data-val="true" data-val-regex-pattern="^\d{5}(-\d{4})?$" data-val-regex="Zip Code format is not valid" autocomplete="false">

而且我不想将这篇文章与整个源代码混淆,但可以找到 here .

最佳答案

如果您从站点显示更多 HTML 并解释为什么需要 TAB 会有所帮助?如果您选择另一个字段,则直接引用该元素。

对于您正在显示的元素,它有一个 id 所以使用它:

page.getElementById("ZipCode").innerText = "myValue"

没有 javascript 可以在该元素上触发。

关于javascript - 如何使用 vba 宏触发特定网页事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34617352/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com