用于单击javascript超链接的PowerShell脚本

时间:2015-05-30 01:07:03

标签: powershell

Powershell脚本,用于打开网页并单击特定链接

我正在尝试编写一个打开特定网页并单击特定链接的脚本。我无法编辑HTML,因为它嵌入在设备(数字投影仪)上。我之前已经看过这个问题并得到了回答,但是我无法让它发挥作用。我甚至尝试从其他serverfault答案中复制代码,并且我不断收到相同或类似的错误:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

PowerScript

$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("http://10.10.62.200/")
$link = @($ie.Document.getElementsByTagName('A')) | Where-Object {$_.href -match "`#javascript:powerOn()"}
$link.click()

其他信息&背景

这是我试图点击的链接,它正在调用javascript函数:

<a href="javascript:powerOn();">
   <img src="./img/power_on_g.png" width="75" height="32" border="0" name="power_on"></a>

此代码实际上位于非常简单的网页上的iframe中。它是NEC NC1200C投影机的控制面板,适用于在同一系统上工作的任何其他人。我正在尝试编写一个脚本来拉出投影仪的Web界面并自动打开它。我将在下面列出构成相关页面的所有代码。

这是被调用页面的HTML: HAVING TROUBLE INSERTING CODE EVEN WITH CODE MARKUP

与类似问题的链接:

Click a hyperlink using powershell

Powershell click on javascript link

How to click on that security hyperlink powershell

1 个答案:

答案 0 :(得分:2)

好吧,我终于让它在实验室工作了。

假设这个示例HTML文件:

<html>
<body>
<script type="text/javascript">
function powerOn(){
  document.location.href="http://google.com";
}
</script>
<a href="javascript:onclick=powerOn();"><img src="http://www.google.fr/url?source=imglanding&ct=img&q=http://www.picturesnew.com/media/images/e4454c8df9.png&sa=X&ei=lBhpVazqG6a07ga6l4JA&ved=0CAkQ8wc&usg=AFQjCNFnfXIWemeXiHvyqvfHMmgxOFcJFg" width="75" height="32" border="0" name="power_on"></a>
</body>
</html>

然后是这个Powershell脚本:

$ie = new-object -com internetexplorer.application
$ie.visible=$true
$ie.navigate('http://192.168.108.130')
$link=$ie.Document.getElementsByTagName('A') | Where-Object {$_.href -eq "javascript:onclick=powerOn();"}
$link.click()

从那里,当我运行我的Powershell脚本时,我成功地重定向到Google,就像我点击图像一样。

我认为您的主要问题与您使用的-match表达式有关。不知道为什么......但我使用了-eq代替。

我还在onClick指令中添加href事件,这似乎是成功调用$link.click()所必需的。