我需要有关自动填写网页的帮助。我想在 Edge 中打开页面,在字段中输入内容,然后通过按钮保存发生的内容,然后再次关闭选项卡。 目前我的代码是这样的:
[system.Diagnostics.Process]::Start("msedge","https://mypage.com")
Sleep 3
$wshell = New-Object -ComObject wscript.shell;
$wshell.AppActivate('MyTab')
$wshell.SendKeys("%n{TAB}")
$wshell.SendKeys("%n{TAB}")
$wshell.SendKeys("%n{TAB}")
$wshell.SendKeys("%n{TAB}")
$wshell.SendKeys("%n{TAB}")
$wshell.SendKeys("%n{TAB}")
$wshell.SendKeys("{H}")
$wshell.SendKeys("{e}")
$wshell.SendKeys("{l}")
$wshell.SendKeys("{l}")
$wshell.SendKeys("{o}")
$wshell.SendKeys("%n{TAB}")
$wshell.SendKeys("%n{TAB}")
$wshell.SendKeys("%n{TAB}")
$wshell.SendKeys("{ENTER}")
如您所见,我使用选项卡在页面上移动并通过 SendKeys 进行所有输入,但这里肯定有更好的变体? 要进行输入的字段,我已经弄清楚了,是:
<div class="DialogInput_Wrapper _DialogLayout Panel Focusable"><input type="text" name="personaName" class="DialogInput DialogInputPlaceholder DialogTextInputBase Focusable" tabindex="0" value="Goodbye"></div>
分别
<input type="text" name="personaName" class="DialogInput DialogInputPlaceholder DialogTextInputBase Focusable" tabindex="0" value="Goodbye">
保存按钮是:
<button type="submit" class="DialogButton _DialogLayout Primary Focusable" tabindex="0">Save</button>
我什至可以通过这种方式进行输入,还是“制表符”变体是看似最好的解决方案? 如果我把它变成一个 ComObject,它还能工作吗?
请提供一些提示或帮助。 谢谢
亲切的问候 罗马
我试过 ie-code,但是 Explorer 没有正确显示页面。 使用的代码是:
$mytext="hello"
$url = "https://mypage.com"
$ie = New-Object -com InternetExplorer.Application
$ie.visible = $true
$ie.navigate($url)
while($ie.Busy) { Start-Sleep -Milliseconds 100 }
$ie.document.IHTMLDocument3_getElementByName("personaName").value = $mytext
$ie.document.IHTMLDocument3_getElementById("Save").click()
我认为,这在理论上是正确的代码,但是我如何为 ComObject 挑选网页的各个组件,类似于以下代码:
$ie.document.IHTMLDocument3_getElementByName("personaName").value = $mytext
您需要更好地了解 HTTP 的真正工作原理。 HTTP 有两部分 1) 客户端 2) 服务器。可以使用浏览器(包含查看器)或 HTTP 客户端(不包含查看器)来实现客户端。客户端向服务器发送 HTTP 请求并返回响应。该请求有一个 URL 和可选的标头和正文。响应仅包含标题和/或正文。
通常有5个步骤会重复多次
在您的情况下,您的客户首先向 URL 发送请求,然后在对客户的响应中取回网页。你的情况响应是 HTML 代码。 客户端然后解析 html 以找到按钮单击事件。当点击事件被激活时,第二个请求将发送到具有不同 URL 的服务器,并且可以包含到服务器中新 html 页面的路由。
可以使用库函数GetElementBy 来完成解析。您是否需要在代码运行时查看网页或发送请求并取回响应?发送密钥不是使用 HTML 的最佳方式。最好使用 HTML 库来解析 HTML 网页(通常称为抓取)。请参阅以下内容:如何使用 PowerShell 解析网站的 HTML