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)
}
}