PowerShell网页自动化

因每天登录云盘去签到,感觉很麻烦,每次都要输入用户名与密码(因密码太多经常忘记)。一直在想着怎么做一个网页自动化工具。
某天逛OSChina时,发现AAuto语言在网页自动化很方便,看很多脚本直接调用.net库(我看过的AAuto代码不多,可能很片面)来实现功能的,所以就想PowerShell也可以调用.net库,那我直接用powershell写个网页自动化脚本算了。

于是……于是我费了九牛二虎之力才发现用com形式调用IE比较方便。(系统为64位Win7,PowerShell V3, IE10)

$ie = new-object -com "InternetExplorer.Application"       
$ie.Navigate("www.115.com")             #打开115网页
$ie.Visible=$true                       #使IE窗口可见
[System.Threading.Thread]::Sleep(4000)  #等待加载页面,也可以用$ie.busy写个Function来判断页面是否加载完成
$doc = $ie.document
$userid = $doc.getElementById("js-account")  #获取用户名输入框,其ID为js-account

在运行第6行代码时,总提示错误,说什么 getElementById 的第1个参数有误
我Google了很久,才发现PowerShell对IE9+支持性不是很好,要将IE模式修改为兼容或IE8……鄙视PowerShell下先,每次都要在第4步时手动修改IE模式……

所以添加了个选择,代码修改如下

$ie = new-object -com "InternetExplorer.Application"       
$ie.Navigate("www.115.com")             #打开115网页
$ie.Visible=$true                       #使IE窗口可见
[System.Threading.Thread]::Sleep(4000)  #等待加载页面,也可以用$ie.busy写个Function来判断页面是否加载完成

#Prompt The Selected Yes Or No
$title = "IE模式"
$message = "请修改IE模式为兼容或IE8"
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", `
    "已经修改IE模式"
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", `
    "没有修改IE模式"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice($title, $message, $options, 1)
switch ($result)
{
    0 { write-host "`n登录115.com`n" -foregroundcolor Yellow;}
    1 { write-host "`n退出脚本`n"  -foregroundcolor Magenta; exit}
}

$doc = $ie.document
$userid = $doc.getElementById("js-account")  #获取用户名输入框,其ID为js-account
$userpwd = $doc.getElementById("js-passwd") #获取密码输入框,其ID为js-passwd
$userid.value = "...." #输入用户名
$userpwd.value = "...." #输入密码
$btSubmit = $doc.getElementById("js-submit") #获取登录按钮
$btsubmit.click() #点击 
这样直接就登录115了。
至于怎样获取页面控件ID,这个IE的话按F12查找吧(这个不怎么熟悉),Firefox的话就更简单了……Google一下N种方式

[System.Threading.Thread]::Sleep(4000)
$ie.Navigate2("http://www.115.com/?ct=event&ac=user_active", 0x1000)

等待页面加载完成后,自动在新标签下打开抽奖页面……此后就不用再说了吧……


最近发现一个.net开源类库WatiN,用来做Web自动化测试的。在学习中,不过对Firefox支持不怎么样,只支持Firefox 2与Firefox 3……我想说脏话……好在对IE支持不错,最近在学习中


你可能感兴趣的:(PowerShell)