forms - 使用令牌形成 Click()
问题描述
这是我正在尝试做的事情:
- 打开一个站点并单击“我接受”按钮以接受条款。(作品)
- 上面将我重定向到我输入用户名和密码的登录页面。(作品)
- 点击“登录”。(失败,但我没有错误)
我启用了保护模式,尽管我无法以系统管理员身份运行脚本。还有一点是,当单击“登录”按钮时,该站点似乎发布了一个令牌。知道为什么解决方案不起作用吗?
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>
电源外壳:
$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')
推荐阅读
- javascript - 如何在未嵌套的组件之间传递数据?
- xcode - Xcode/React-native:未定义符号:_swift_getFunctionReplacement
- python - 在python中的特定索引之后,在嵌套列表中将元素相乘
- discord.js - 当机器人被踢出语音通道时我怎么能得到
- html - 如何更改超链接标签的外观但仅在表格行内
- eclipse - eclipse-mosquitto 中的 docker exec 错误
- javascript - 从两个表轮询数据 - heidisql
- git - R-studio 找不到 Git 的文件路径。使用 M1 Macbook,版本 (11.2)
- javascript - React - event.target 未定义/空
- php - 使用 dbDelta 的 WordPress 创建表在插件中不起作用