使用令牌形成 Click()
Form Click() with a Token
这是我正在尝试做的事情:
- 打开站点并单击 "I accept" 按钮接受条款。 (有效)
- 上面将我重定向到一个登录页面,我在其中输入用户名和密码。 (有效)
- 单击 "Log in"。 (失败,但我没有收到任何错误)
我启用了保护模式,但我无法以系统管理员身份运行编写脚本。另一点是,当单击 "Log in" 按钮时,此站点显示为 post 令牌。知道为什么解决方案不起作用吗?
HTML:
<form id="mainform" method="post" autocomplete="off" action="/URL/" onsubmit="submitHandler(); return true;">
<table class="loginTable">
...
<tr>
<td colspan="2" class="colSpanRow" id="loginSubmitTd">
<input type="submit" value="Log in" tabindex="4" id="loginSubmit" />
</td>
</tr>
PowerShell:
$ie = New-Object -ComObject 'InternetExplorer.Application'
$ie.Visible = $true
$ie.Navigate("url")
Start-Sleep -s 2
$link = @($ie.Document.GetElementsByTagName('A')) |
Where-Object {$_.InnerText -eq 'I accept'}
$link.Click()
Start-Sleep -s 5
$ie.Document.IHTMLDocument3_getElementById('username').Value = "username"
$ie.Document.IHTMLDocument3_getElementById('password').Value = "pw"
$submitButton = @($ie.Document.IHTMLDocument3_getElementsByTagName('input')) |
Where-Object {$_.Value -eq 'Log in'}
Write-Host $submitButton.id
$submitButton.Click()
我建议您避免使用 IHTMLDocument3_getElementsByTagName
并使用 getElementsByTagName
函数。
在您的代码中,这将是
$submitButton = @($ie.Document.getElementsByTagName('input')) | Where-Object {$_.value -eq 'Log in'}
甚至更好:
$submitButton = $ie.Document.getElementById('loginSubmit')
这是我正在尝试做的事情:
- 打开站点并单击 "I accept" 按钮接受条款。 (有效)
- 上面将我重定向到一个登录页面,我在其中输入用户名和密码。 (有效)
- 单击 "Log in"。 (失败,但我没有收到任何错误)
我启用了保护模式,但我无法以系统管理员身份运行编写脚本。另一点是,当单击 "Log in" 按钮时,此站点显示为 post 令牌。知道为什么解决方案不起作用吗?
HTML:
<form id="mainform" method="post" autocomplete="off" action="/URL/" onsubmit="submitHandler(); return true;">
<table class="loginTable">
...
<tr>
<td colspan="2" class="colSpanRow" id="loginSubmitTd">
<input type="submit" value="Log in" tabindex="4" id="loginSubmit" />
</td>
</tr>
PowerShell:
$ie = New-Object -ComObject 'InternetExplorer.Application'
$ie.Visible = $true
$ie.Navigate("url")
Start-Sleep -s 2
$link = @($ie.Document.GetElementsByTagName('A')) |
Where-Object {$_.InnerText -eq 'I accept'}
$link.Click()
Start-Sleep -s 5
$ie.Document.IHTMLDocument3_getElementById('username').Value = "username"
$ie.Document.IHTMLDocument3_getElementById('password').Value = "pw"
$submitButton = @($ie.Document.IHTMLDocument3_getElementsByTagName('input')) |
Where-Object {$_.Value -eq 'Log in'}
Write-Host $submitButton.id
$submitButton.Click()
我建议您避免使用 IHTMLDocument3_getElementsByTagName
并使用 getElementsByTagName
函数。
在您的代码中,这将是
$submitButton = @($ie.Document.getElementsByTagName('input')) | Where-Object {$_.value -eq 'Log in'}
甚至更好:
$submitButton = $ie.Document.getElementById('loginSubmit')