Internet explorer 通过Internet Explorer执行javascript';使用PowerShell的s com接口

Internet explorer 通过Internet Explorer执行javascript';使用PowerShell的s com接口,internet-explorer,com,powershell,webautomation,Internet Explorer,Com,Powershell,Webautomation,我正在使用PowerShell编写一些Internet Explorer自动化脚本。以下是如何启动IE com对象: $ie = New-Object -com "InternetExplorer.Application" $ie.Navigate("about:blank") $ie.visible = $true $doc = $ie.Document 因此,我想做的是在$doc对象上执行一些javascript。例如,我在页面上有一个项目,它有一个执行submitCommand('lo

我正在使用PowerShell编写一些Internet Explorer自动化脚本。以下是如何启动IE com对象:

$ie = New-Object -com "InternetExplorer.Application"
$ie.Navigate("about:blank")
$ie.visible = $true

$doc = $ie.Document
因此,我想做的是在
$doc
对象上执行一些javascript。例如,我在页面上有一个项目,它有一个执行
submitCommand('lookup')
onclick
事件,因此我希望直接在
$doc
上运行它,而不必在页面上找到对象,然后调用
Click()
方法

由于对象既没有名称也没有id,所以更容易更改,因为我只能依赖它在页面上的位置(例如:页面上的第11个跨距项)


或者,如何根据元素的类选择元素?这将有很大帮助,因为“按钮”有自己的类

谢谢

$SPAN=@($ie.document.getElementsByTagName(“SPAN”))

将管道连接到要筛选所需对象的位置(基于其属性),然后调用click方法,例如:

$span11 = $spans | where {$_.innerText -eq 'something'}
$span11.click()

或者,如何根据元素的类选择元素?这会很有帮助,因为“按钮”有自己的类。@Philippe:与其用更多的信息和问题来评论你自己的问题,为什么不简单地编辑现有的问题?这不完全是我希望的解决方案,但肯定是我问题的更干净的解决方案。谢谢。顺便问一下,有没有办法将where的结果存储在数组中?如果筛选有多个结果,如果将其存储在如下变量中,则只返回第一个结果?您可以将其包装在“@()”:$span11=@($span |其中{$\ innerText-eq'something'))