PowerShell小技巧实现IE Web自动化
Windows系统自带的InternetExplore+加上PowerShell即可搞定。
今天就分享下这几天自己写的几个小函数,欢迎拍砖:
# #打开IE窗口 # functionNew-IEWindow { param( [string]$Url, [switch]$Visible, [switch]$FullScreen ) $Global:IEHost=new-object-com"InternetExplorer.Application" $Global:IEHost.Navigate($Url) #设置IE可见性和全屏 $Global:IEhost.Visible=$Visible $Global:IEHost.FullScreen=$FullScreen } # #等待IE加载完毕 # functionWait-IEReady([int]$TimeoutSeconds=10) { $milliseconds=0 $maxMilliseconds=$TimeoutSeconds*1000 while($Global:IEHost.Busy) { if($milliseconds-gt$maxMilliseconds) { throw'Waitiereadytimeout.' } sleep-Milliseconds100 $milliseconds+=100 } } # #根据ID,Class,Name,Tag获取HTML元素 # functionGet-HtmlElement($Id,$Name,$Class,$Tag) { if($Id) { return$IEHost.Document.getElementById($id) } elseif($Name) { return$IEHost.Document.getElementsByName($Name) } elseif($Class) { $IEHost.Document.all|where{$_.className-contains$Class} } elseif($Tag) { $IEHost.Document.getElementsByTagName($Tag) } } # #关闭IE窗口 # functionClose-IEWindow { $Global:IEHost.quit() Remove-VariableIEHost-Force } # #设置IE的地址 # functionNavigate-IE($Url) { Set-IE-URL$Url } # #设置IE的地址,或者动作:前进,倒退,刷新 # functionSet-IE { param( [ValidateSet('GoBack','GoForward','Refresh')] [string]$Action, [uri]$URL ) #动作 switch($Action) { ('GoBack'){$Global:IEHost.GoBack()} ('GoForward'){$Global:IEHost.GoForward()} ('Refresh'){$Global:IEHost.Refresh()} } #设置IE地址 if($URL){ $Global:IEHost.Navigate($URL)} } # #在IE窗口中执行脚本 # functionInvoke-IEScript($Code,$Language='Javascript') { if(-not[string]::IsNullOrWhiteSpace($Code)) { $Global:IEHost.Document.parentWindow.execScript($Code,$Language) } }