单击javascript超链接的PowerShell脚本 Powershell脚本打开网页并单击特定链接

单击javascript超链接的PowerShell脚本 Powershell脚本打开网页并单击特定链接,powershell,Powershell,我试图写一个脚本,打开一个特定的网页,点击一个特定的链接。我无法编辑HTML,因为它嵌入在设备(数字投影仪)上。我以前见过这个问题被问到和回答过,但我无法让它起作用。我甚至尝试过从其他服务器复制代码错误答案,但我不断收到相同或类似的错误: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo : InvalidOperation:

我试图写一个脚本,打开一个特定的网页,点击一个特定的链接。我无法编辑HTML,因为它嵌入在设备(数字投影仪)上。我以前见过这个问题被问到和回答过,但我无法让它起作用。我甚至尝试过从其他服务器复制代码错误答案,但我不断收到相同或类似的错误:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
PowerScript 其他信息和背景 这是我试图单击的链接,该链接正在调用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投影仪的控制面板,供在同一系统上工作的任何其他人使用。我正试图写一个脚本来打开投影仪的网络界面并自动打开它。我将包括构成下面讨论的页面的所有代码

这是所调用页面的HTML:

即使使用代码标记也无法插入代码

类似问题的链接:


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

假设此示例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脚本时,我成功地被重定向到Google,就像我在点击图像一样


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


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

在查找链接之前,您不会等待IE加载页面。getElementsByTagName找不到任何内容,因为页面尚未加载,因此您尝试单击非链接的内容。您需要从链接的帖子中包含
ie.busy
ie.readystate-ne 4
。使用iFrame可能需要做更多的工作。我会用Firebug或Chrome开发工具或IE开发工具或Fiddler2代理来观察JavaScript实际发送的内容,看看我是否可以通过
调用WebRequest
直接发送,而不必使用IE。事后想想——因为它是PowerShell,你可以在shell中输入这些内容并实时控制IE。执行
$ie=new object-com“InternetExplorer.Application”
,然后执行
$ie.Visible=$true
,它将显示为一个窗口,仍然由PowerShell控制。然后,您可以探索$ie.Document,blahblah以交互方式返回的内容,比编写脚本和猜测更简单、更有趣,发现它不起作用,不知道为什么。谢谢。这对我有帮助。
<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>
$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()