用PowerShell关闭弹出窗口

时间:2016-12-28 15:55:41

标签: javascript powershell

目前我正在编写一个脚本来自动化IE中的进程以添加计算机名称及其MAC,以便我们对其进行成像。该页面有两个字段,一个用于MAC,一个用于计算机名称,然后是添加新按钮。目前它仍然是手动输入,但我打算从csv读取一次做大组。

我目前遇到的问题是,只要有重复的记录,它会通过javascript弹出窗口告诉您。弹出窗口禁用与IE页面的交互。我需要一种方法来关闭条目之间的弹出窗口。

这就是我的代码目前的样子。

std::unique_ptr<int> ar[3];
std::fill(ar.begin(), ar.end(), make_unique_for_each_element_somehow<int>(1));

编辑:

我现在决定用一个草率的解决方案来关闭每个新条目的com对象。但是我现在遇到了导入csv以便脚本读取的问题。

1 个答案:

答案 0 :(得分:1)

$wshell = New-Object -ComObject wscript.shell;
if($wshell.AppActivate('Message from webpage'))
{
    Start-Sleep -Seconds 1
    [System.Windows.Forms.SendKeys]::SendWait('{Enter}')
}

此代码会将活动窗口设置为标题为"Message from webpage"的窗口。因此请调整它以匹配弹出标题。

然后它会发送Enter按键。您可以调整此项以发送组合键以关闭弹出窗口。甚至可以使用ALT+F4

发送::SendWait('%{f4}')

我假设Javascript弹出窗口在新窗口中打开。或者,我会看到页面上使用了其他JavaScript,如果只是弹出窗口,则在该页面上为com对象禁用Javascript。

修改

要禁用Javascript,您需要关闭此页面的所有Java代码执行,方法是将其添加到受限制的站点安全区域,并确保关闭该区域的javascript执行。但我有一个更好的主意,你可以使用com对象尝试打破页面弹出功能:

$ie = new-object -ComObject "InternetExplorer.Application"
$ie.visible = $true
$ie.navigate("http://www.echoecho.com/jswindows03.htm")
$ie.Document.body.innerHTML = $ie.Document.body.innerHTML -replace "popup\('www.yahoo.com', 'Win1', 300, 300\);", ""

此代码块打开一个具有演示javascript弹出功能的页面,然后从按钮onclick事件中删除函数调用。导致永远不会被称为流行音乐。你可以做我修改页面的客户端副本并打破javascript或修改它永远不会显示的相同技巧。