powershell 更改值并从网站单击按钮

问题描述 投票:0回答:1

我需要有关自动填写网页的帮助。我想在 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

html powershell web-scraping button automation
1个回答
0
投票

您需要更好地了解 HTTP 的真正工作原理。 HTTP 有两部分 1) 客户端 2) 服务器。可以使用浏览器(包含查看器)或 HTTP 客户端(不包含查看器)来实现客户端。客户端向服务器发送 HTTP 请求并返回响应。该请求有一个 URL 和可选的标头和正文。响应仅包含标题和/或正文。

通常有5个步骤会重复多次

  1. 客户发送请求
  2. 服务器接收请求
  3. 服务器处理请求
  4. 服务器发送响应
  5. 客户收到回复。

在您的情况下,您的客户首先向 URL 发送请求,然后在对客户的响应中取回网页。你的情况响应是 HTML 代码。 客户端然后解析 html 以找到按钮单击事件。当点击事件被激活时,第二个请求将发送到具有不同 URL 的服务器,并且可以包含到服务器中新 html 页面的路由。

可以使用库函数GetElementBy 来完成解析。您是否需要在代码运行时查看网页或发送请求并取回响应?发送密钥不是使用 HTML 的最佳方式。最好使用 HTML 库来解析 HTML 网页(通常称为抓取)。请参阅以下内容:如何使用 PowerShell 解析网站的 HTML

© www.soinside.com 2019 - 2024. All rights reserved.