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