因为摊上了腾讯的这档子事儿,FFFFFFK,被迫的重操旧业拿起了autoit这个自动化工具,还是头一次进行比较复杂的浏览器操作,其中获取frame元素琢磨了一些时间。脚本贴在下面,供参考并不负责:
; ; AutoIt Version: 3.0 ; Language: English ; Platform: Win9x/NT ; Author: Jonathan Bennett (jon at autoitscript dot com) ; ; Script Function: ; Demo of using multiple lines in a message box ; ; Use the @CRLF macro to create a newline in a MsgBox - it is similar to the \n in v2.64 ; MsgBox($MB_SYSTEMMODAL, "AutoIt Example", "This is line 1" & @CRLF & "This is line 2" & @CRLF & "This is line 3") #include <Constants.au3> #include<IE.au3> #include <MsgBoxConstants.au3> ;open the exmail.qq page Global $oIE = _IECreate("http://exmail.qq.com") ;js($oIE,FileRead("jquery-1.7.min.js")) _IEPropertySet ($oIE, "left",0) _IEPropertySet ($oIE, "top",0) _IEPropertySet ($oIE, "height",@DesktopHeight-30) _IEPropertySet ($oIE, "width",@DesktopWidth) Sleep(3000) Send("!s") sleep(5000) ;click to close the dialog $ieObj = _IEGetObjById($oIE, "dlg_mxchange_QMDialog__closebtn_") _IEAction($ieObj, "Click") Sleep(2000) ;click inbox MouseClick($MOUSE_CLICK_LEFT, 79, 253) Sleep(2000) ;click jump MouseClick($MOUSE_CLICK_LEFT, 1312, 178) sleep(2000) ;jump to page 76 $xi = 77 send($xi & "{ENTER}") sleep(2000) ;for $xi = 1 to 39 Step 1 ;点击下一页,到达上次中断的页 ;MouseClick($MOUSE_CLICK_LEFT, 1272, 178) ;sleep(2000) ;Next For $i = 1 to 40 step 1 ;click first mail in this page MouseClick($MOUSE_CLICK_LEFT, 285, 260) sleep(2000) For $j = 1 to 25 step 1 ;取得“显示更多”图标的上级frame及自身的 id Local $oFrame = _IEFrameGetObjByName($oIE, "mainFrame") $ieObj = _IEGetObjById($oFrame, "display_more_operator") ;获得“显示更多”的屏幕坐标 Local $iX = _IEPropertyGet($ieObj, "screenx") Local $iY = _IEPropertyGet($ieObj, "screeny") ;计算获得“保存为eml”的坐标 Local $iX2 = $iX - 885 Local $iY2 = $iY + 55 ;多按一次alt+s Send("!s") sleep(1000) ;点击“显示更多图标” MouseClick($MOUSE_CLICK_LEFT, $iX, $iY) sleep(1000) ;点击“保存为eml” MouseClick($MOUSE_CLICK_LEFT, $iX2, $iY2) sleep(3000) ;输出alt+s保存文件 Send("!s") sleep(8000) ;点击滚动到下条 ;MouseClick($MOUSE_CLICK_LEFT, 1350, 710,2) ;sleep(3000) ;click next mail MouseClick($MOUSE_CLICK_LEFT, 1318, 150) sleep(2000) Next ;click back to the list ;这里有bug,返回不是到邮件列表而是到上一页了 ;MouseClick($MOUSE_CLICK_LEFT, 245, 150) ;sleep(2000) ;click inbox MouseClick($MOUSE_CLICK_LEFT, 79, 253) Sleep(2000) ;click jump MouseClick($MOUSE_CLICK_LEFT, 1312, 178) sleep(2000) $xi = $xi + 1 ;for $xj = 1 to $xi Step 1 ;点击下一页 ;MouseClick($MOUSE_CLICK_LEFT, 1272, 178) ;next ;jump to page 76 send($xi & "{ENTER}") sleep(2000) Next