如何使PowerShell $ ie COM对象引用新的浏览器窗口

时间:2016-03-23 13:58:01

标签: html powershell

我有一个PowerShell脚本,它登录到一个站点并单击指向外部站点的链接。单击链接后,它将在新窗口中打开并关闭原始窗口。

这是一个问题,因为我需要访问新页面上的元素,但是无法对文档执行任何命令(例如getElementById),因为$ ie com对象仍然引用原始窗口。有没有办法告诉$ ie com对象引用打开的新窗口而不是旧窗口?任何帮助表示赞赏。谢谢

2 个答案:

答案 0 :(得分:1)

您需要连接到正确的IE实例。

$AllExplorers = (New-Object -ComObject Shell.Application).Windows() 

这将返回所有文件和Internet Explorer对象。

接下来,您可以通过名称或网址找到您的IE。

$MyIE = $AllExplorers | Where-Object {$_.LocationName -eq "Google"}}
$MyIE = $AllExplorers | Where-Object {$_.LocationUrl -like "*google.com*"}

您现在可以在$MyIE搜索元素...

$element = $MyIE.Document.getElementById('ID')

答案 1 :(得分:0)

<强>解决

创建了一个新的InternetExplorer.Application COM对象,如此

$ie2 = New-Object -COMObject InternetExplorer.Application

$ie2.Navigate("linkToPopupWindow.com")

然后我可以在执行睡眠后引用$ ie2的文档对象,如下所示:

Start-Sleep -Seconds 3
$doc = $ie2.Document

这对我有用。感谢大家的投入。希望这有助于其他人。如果有人同样挣扎,请随时给我发消息,我可以尝试帮助!