Web scraping 用自动热键查找并填充输入字段

Web scraping 用自动热键查找并填充输入字段,web-scraping,autohotkey,getelementbyid,Web Scraping,Autohotkey,Getelementbyid,对所有自动热键大师的挑战: 为我们提供一个函数,该函数将查找光标并将其移动到输入字段(例如LoginName),或者发送输入文本。对于像我这样懒散的老黑客来说,只是在摆弄AHK,它看起来是这样的: FindFillField(*elementid*,*sendtext*,*alt-text*) 其中elementid是字段的HTML id,例如用户名, 其中,sendtext是要填充和删除的文本 其中,alt text可以是额外的特定文本,以帮助识别字段 附加的可选参数总是有助于解决奇数情况,

对所有自动热键大师的挑战:

为我们提供一个函数,该函数将查找光标并将其移动到输入字段(例如LoginName),或者发送输入文本。对于像我这样懒散的老黑客来说,只是在摆弄AHK,它看起来是这样的:

FindFillField(*elementid*,*sendtext*,*alt-text*)
其中
elementid
是字段的HTML id,例如用户名, 其中,
sendtext
是要填充和删除的文本 其中,
alt text
可以是额外的特定文本,以帮助识别字段

附加的可选参数总是有助于解决奇数情况,所以让您的想象力尽情发挥吧


对于像我这样的老手和任何人来说,创建简单的登录宏都是件好事。

您可以始终使用{TAB}选项。打开网站并按TAB键,直到到达输入字段并计算点击次数。那就做吧 发送{TAB}。我使用下面的代码将名字、中间名、姓氏和其他两个id输入到web表单中。变量被输入到创建的GUI表单中

Send {TAB 41}
Send %firstn%
Send {TAB}
Send %middle%
Send {TAB}
Send %lastn%
Send {TAB}
Send %deas%
Send {TAB}
Send %npis%
Send {TAB 3}
Send {N}
Send {TAB 2}
Send {ENTER}

可以使用以下代码将文本发送到输入字段:

wb.document.getElementById("login-username").value := "myUserName"
其中,
wb
是COM对象,
login username
是输入字段的ID,
myUserName
是您希望输入的内容

除了ID之外,您还可以通过名称
getElementsByName(…)
、标记名
getElementsByTagName(…)
或类名
getElementsByClassName(…)
查找输入字段。我发现它很有用。使用Chrome或Firefox了解如何识别输入字段(右键单击并按“inspect element”)

如果要将光标移动到输入字段,请使用

wb.document.getElementById("login-username").focus()
以下是使用IE和堆栈溢出登录页面的完整示例:

; Create IE instance
wb := ComObjCreate("InternetExplorer.Application")
wb.Visible := True
wb.Navigate("https://stackoverflow.com/users/login")
; Wait for page to load:
While wb.Busy or wb.ReadyState != 4
    Sleep, 100
; Press "Log in using Stack Exchange"
wb.document.getElementById("se-signup-legend").click()
While wb.Busy or wb.ReadyState != 4
    Sleep, 100
; EITHER focus on the input field:
wb.document.getElementsByName("email")[0].focus()
; OR send text directly to the field:
wb.document.getElementsByName("email")[0].value := "my@email.com"
这些可能会有帮助:以及