使用PowerShell在IE中自动执行JavaScript确认提示

时间:2013-07-16 20:15:37

标签: internet-explorer powershell automation

我在HTML页面中有以下JavaScript代码:

<script language="javascript" type="text/javascript">
    function confirmAutoTransitionSelection() {
        var autoTransition = 'OFF';
        if (document.getElementById('autoTransitionON').checked) {
            autoTransition = 'ON';
        }
        return confirm('Are you sure you want to turn ' + autoTransition + ' the Auto Transition Setting?');
        }
</script>

同样在HTML代码中,我有以下输入按钮,我使用PowerShell脚本自动点击:

<form method="post">
Auto Transition
<input type="radio" id="autoTransitionON" name="autoTransition" checked value="true" /> ON
<input type="radio" name="autoTransition" value="false" /> OFF
<input class="submitBtn" type="submit" name="autoTransitionBtn" onclick="javascript:return confirmAutoTransitionSelection();" value="[Update]"/>
</form>

这是我的PowerShell脚本:

$ie = new-object -com "InternetExplorer.Application"
$ie.Navigate("http://localhost/test/")
While ($ie.Busy) {Sleep 2}
$doc = $ie.Document
$autobutton = $doc.getElementById("autoTransitionON").Click()
$btn = $doc.getElementsByTagName("input")
$autotransbtn = $btn | ? {$_.Name -eq "autoTransitionBtn"}
$autotransbtn.Click()
$ie.Quit()

使用PowerShell脚本自动单击输入按钮时没有任何问题,但JavaScript会抛出必须单击以确认更改的确认。这是我遇到问题的地方。如何自动点击JavaScript确认?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我基本上查询了该项的outerHTML属性以获取HTML代码。然后,您只需将"confirm (*)"替换为""即可。之后,您可以将其重新设置为脚本,然后单击它。

$Script = $IE.document.getElementsByTagName("script").item(#----------Whatever Number it is)
$Script.outerHTML = $Script.outerHTML | % {if ($_ -like "return confirm*") {"return true;"} else {$_}}
$autotransbtn.Click()