【问题标题】:powershell - IE checkbox not being recognisedpowershell - 无法识别 IE 复选框
【发布时间】:2018-12-13 00:34:33
【问题描述】:

最近我为我们的一个监控系统创建了一个 powershell 脚本,该脚本自动加载网页,使用用户凭据登录并提交凭据以加载仪表板页面。

验证凭据并加载仪表板页面后,会出现一个“自动扩展会话”复选框(默认情况下,会话在 30 分钟不活动后超时)。

我还尝试自动检查复选框。从我所见,检查成功应用,当我获得元素的状态时,检查值显示为“真” - 但是 30 分钟后,系统会自动注销。如果我手动将勾选应用到复选框,它可以正常工作,30 分钟后不会超时。

我在 Windows 7 x86 上使用 IE11。

以前有人遇到过这种情况吗?

应用检查的 powershell 脚本的一部分: $varHEAchk = $ie.Document.getElementByID("extend-session-checkbox").checked = $true

我后来检查了该元素,它确实说明了:

检查:是的

复选框的部分HTML代码:

<input id="extend-session-checkbox" style="margin: -2px 4px 0px 0px;" type="checkbox" />

任何帮助将不胜感激。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    我认为您需要将选中的属性设置为checked 的字符串值,而不是布尔值$true

    $ie.Document.getElementByID("extend-session-checkbox").checked = "checked"
    

    要确定该框是否被选中,您可以使用

    if($ie.Document.getElementByID("extend-session-checkbox").checked)
    

    您也可以考虑默认选中该框:

    <input id="extend-session-checkbox" style="margin: -2px 4px 0px 0px;" type="checkbox" checked />
    

    【讨论】:

    • 多么奇怪,它仍然无法正常工作。我将属性从 boolean $true 修改为“checked”,如果为真,还运行了一个 if 语句(回显“checkbox is check”)。复选框被选中,脚本回显它没问题。但 30 分钟后又超时了。
    • 好的,恐怕将复选框设置为“选中”是一回事,但之后需要提交表单。这可能很棘手。您需要找到表单的action url,如果这是一个相对url,则必须将其转换为绝对url。也许在设置复选框后执行$ie.Document.Forms[0].submit() 有效?
    • 我也见过这样提交表单的解决方案:首先在 Powershell 变量 $form = $ie.Document.Forms[0] 中获取表单。接下来在$form.fields["extend-session-checkbox"] = "checked" 中设置字段。最后使用 Post 请求提交:$response = Invoke-WebRequest -Uri '&lt;YOUR FORMS ACTION URL&gt;' -Method POST -Body $form.fields -ContentType 'application/x-www-form-urlencoded'
    猜你喜欢
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2014-01-08
    • 2012-09-13
    • 2020-03-03
    • 1970-01-01
    相关资源
    最近更新 更多