2016-12-02 80 views
0

我想制作一个脚本,它打开IE 4标签,进入全屏,然后切换标签页,同时不断重新加载页面,只要他们打开。Powershell SendKeys F5发送到错误的选项卡在IE中

add-type -AssemblyName System.Windows.Forms  
$ie = New-Object -ComObject "InternetExplorer.Application" 
$ie.Navigate("http://www.microsoft.com") 
$ie.Navigate2("http://www.google.com" , 2048) 
$ie.Navigate2("http://www.outlook.com" , 2048) 
$ie.Navigate2("http://www.vice.com" , 2048) 
$ie.Visible = $true 
[System.Windows.Forms.SendKeys]::SendWait("{F11}{ENTER}") 

do 
{ 
start-sleep -Milliseconds 4000 
[System.Windows.Forms.SendKeys]::SendWait("{F5}{ENTER}") 
[System.Windows.Forms.SendKeys]::SendWait('^{TAB}') 
[System.Windows.Forms.SendKeys]::SendWait("{F5}{ENTER}") 
} 
While ($i -ne 0) 

使用此当前脚本,浏览器和选项卡打开,它也在选项卡之间切换。问题是,例如,如果它切换到谷歌,微软得到刷新,而不是谷歌。

另一个问题是,它没有进入全屏。命令是否在错误的地方?

PS:这是我的第一个PS脚本

+0

为什么你送'{ENTER}''后{F11}'和'{F5}'? –

+0

@ThorstenDittmar我不知道。我复制了一切...我会尝试没有输入 –

+0

不是说这可以解决您的问题,但是如果您手动执行此操作,会发生什么情况? –

回答

0

我没有试过以下,但看你的代码中,有几件事情怪:

  1. 有显示IE之间没有停顿窗口并试图使其全屏。我想补充一点。
  2. 您无故发送{ENTER}
  3. 在循环中,首先刷新当前选项卡,然后切换选项卡,然后刷新新选项卡。为什么?

我会改变的代码如下:

add-type -AssemblyName System.Windows.Forms  
$ie = New-Object -ComObject "InternetExplorer.Application" 
$ie.Navigate("http://www.microsoft.com") 
$ie.Navigate2("http://www.google.com" , 2048) 
$ie.Navigate2("http://www.outlook.com" , 2048) 
$ie.Navigate2("http://www.vice.com" , 2048) 
$ie.Visible = $true 

start-sleep -Milliseconds 1000 
[System.Windows.Forms.SendKeys]::SendWait("{F11}") 

do 
{ 
    start-sleep -Milliseconds 4000 
    [System.Windows.Forms.SendKeys]::SendWait('^{TAB}') 
    start-sleep -Milliseconds 100 
    [System.Windows.Forms.SendKeys]::SendWait("{F5}") 
} 
While ($i -ne 0) 
+0

正如我所说,这是我的第一个脚本,所以我不知道什么是错的或什么。感谢您纠正它。现在令人耳目一新。但它仍然没有进入全屏。此外,我必须在运行脚本后点击进入IE。有没有一种方法可以让脚本自动知道它必须在刚刚打开的IE窗口中运行? –

+0

嗯。也许这个问题/答案会帮助你:http://stackoverflow.com/questions/27282919/focus-ie-window-in-powershell。你也可以检查COM接口并找出是否所有'SendWait'的东西都可以被方法调用所取代。还有一些事件,例如当页面加载完成时。这可以改善您的整体表现。文档位于:https://msdn.microsoft.com/en-us/library/aa752084(v=vs.85).aspx –