如何使用Python調用AutoIt來實現Flash控件的上傳功能


先看一段代碼 upload.au3(這個后綴autoit3的格式):

;等待出現title為數據采集-軍課網-MozillaFirefox的瀏覽器窗口
WinWait("數據采集 - XX網 - Mozilla Firefox","")

;驗證窗口是否激活,如沒有激活就把窗口激活
IfNotWinActive("數據采集 - XX網 - Mozilla Firefox","")ThenWinActivate("數據采集 - XXX - Mozilla Firefox","")

;等待窗口激活
WinWaitActive("數據采集 - XXX網 - Mozilla Firefox","")

;移動鼠標到要點擊元素坐標位置(flash控件按鈕)
MouseMove(537,725)

;按下鼠標左鍵
MouseDown("left")
;松開鼠標左鍵會彈出window選擇附件的窗口
MouseUp("left")

;等待 title為文件上傳的windows窗口出現
WinWait("文件上傳","命名空間樹控件")

;判斷窗口是否激活,如果沒有激活,把窗口激活
IfNotWinActive("文件上傳","命名空間樹控件")ThenWinActivate("文件上傳","命名空間樹控件")

;等待激活窗口
WinWaitActive("文件上傳","命名空間樹控件")


;ControlFocus("窗口標題","窗口文字",控件類名稱)
;聚焦到 controlID=Edit1的編輯框中(Edit1=Class:EditInstance:1)
ControlFocus("文件上傳","","Edit1")

;等待1000毫秒
Sleep(1000)

;ControlSetText("窗口標題","窗口文字","控件類名稱","新文本")
;為控件設置文本(相當於文本框輸入內容)
ControlSetText("文件上傳","","Edit1","C:\Users\tsbc\Desktop\2015年春季課程采集文件.docx")
Sleep(1000)

;ControlClick("窗口標題","窗口文字","控件類名稱"[,鼠標按鍵][,點擊次數]])
;鼠標點擊按鈕控件完成上傳過程
ControlClick("文件上傳","","Button1")

那么這個腳本如何編寫,運用,建議大家安裝AutoIt3。(下載地址

安裝完成后,使用  進行創建和調試腳本。
使用 獲取控件的title 如下圖:
在進行定位"添加附件"按鈕的坐標
注:另外WinWait(窗口標題,文本參數) 中的文本參數如果有,必須要加上添加。
 
照着這種方式,使用AutoIt函數來模擬操作即可,驗證是否可用,打開瀏覽器(最好瀏覽器保持處於全屏狀態)進入到要點擊按鈕的頁面,在腳本編輯器中菜單欄 Tools -> Go 進行運行腳本(或者按F5),如果成功可以看到界面會自動操作,如腳本出錯,編輯器下方會有日志輸出。
最后保存腳本,使用   將腳本轉換成exe格式。
保存成exe文件后,同樣打開網頁,進入到上傳頁面,雙擊生成的exe文件,能夠進行自動操作exe文件創建完成可以直接調用。
 
最后注:Python中執行exe程序, 引入 os 包,使用 os.system(command) 即可。如:
import os
os.system("E:\upload.exe")

+++++++++++++++++++++++++++++++++++

下面附上AutoIt 函數參考:
  1. {系統環境變量}
  2. EnvUpdate()
    ;更新環境變量
    EnvGet("變量名稱")
    ;取環境變量
    ClipGet()
    ;取剪輯板文本
    EnvSet("變量名稱"[,""])
    ;置環境變量
    ClipPut("文本")
    ;置剪輯板文本

    {文件,目錄,磁盤管理}

  3. IniRead("文件名","功能區","關鍵字","缺省值")
    ;Ini文件讀關鍵字的值
    IniDelete("文件名","功能區","關鍵字")
    ;Ini文件刪除關鍵字
    IniWrite("文件名","功能區","關鍵字","")
    ;Ini文件寫關鍵字的值
    FileInstall("源文件","目標文件"[,參數])
    ;安裝文件
    FileFindFirstFile("文件名")
    ;查找文件(第一次)
    FileFindNextFile(文件號)
    ;查找文件(繼續)
    FileRecycle("源文件")
    ;放入回收站
    FileChangeDir("目錄")
    ;改變當前目錄
    FileCreateShortcut("文件名","快捷方式名"[,"工作目錄","args","desc","圖標","熱鍵"])
    ;建立快捷方式
    DirCreate("目錄")
    ;目錄創建
    DirCopy("源目錄","目標目錄"[,參數])
    ;目錄復制
    DirRemove("目錄"[,參數])
    ;目錄刪除
    DirMove("源目錄","目標目錄"[,參數])
    ;目錄移動
    DriveGetDrive("類別")
    ;驅動器查找
    FileGetLongName("完整路徑和文件名")
    ;取長文件名
    DriveSpaceTotal("路徑")
    ;取磁盤空間
    DriveSpaceFree("路徑")
    ;取磁盤剩余空間
    FileGetShortName("完整路徑和文件名")
    ;取短文件名
    DriveGetLabel("路徑")
    ;取驅動器卷標
    DriveGetType("路徑")
    ;取驅動器類型
    DriveGetFileSystem("路徑")
    ;取驅動器文件格式
    DriveGetSerial("路徑")
    ;取驅動器序列號
    DriveStatus("路徑")
    ;取驅動器狀態
    FileGetVersion("文件名")
    ;取文件版本
    FileGetSize("文件名")
    ;取文件大小
    FileGetTime("文件名"[,選項])
    ;取文件日期
    FileGetAttrib("文件名")
    ;取文件屬性
    FileSaveDialog("標題","初始目錄","文件類型"[,選項])
    ;文件保存對話框
    FileOpen("文件名",打開方式)
    ;文件打開
    FileOpenDialog("標題","初始目錄","文件類型"[,選項])
    ;文件打開對話框
    FileRead(文件號或"文件名",字符個數)
    ;文件讀
    FileReadLine(文件號或"文件名"[,行號])
    ;文件讀行
    FileCopy("源文件","目標文件"[,參數])
    ;文件復制
    FileClose(文件號)
    ;文件關閉
    FileSelectFolder("提示文本","根目錄",參數)
    ;文件夾選擇
    FileDelete("路徑")
    ;文件刪除
    FileExists("路徑")
    ;文件是否存在
    FileWrite(文件號或"文件名","內容")
    ;文件寫
    FileWriteLine(文件號或"文件名","內容")
    ;文件寫行
    FileMove("源文件","目標文件"[,參數])
    ;文件移動
    DriveSetLabel("路徑","卷標名")
    ;置驅動器卷標
    FileSetTime("文件","日期",選項[,參數])
    ;置文件日期
    FileSetAttrib("文件","+-RASHNOT"[,參數])
    ;置文件屬性

     

  4. {鍵盤控制}

  5. Send("按鍵"[,參數])
    ;發送
    HotKeySet("熱鍵"[,"自定義功能函數"])
    ;重置熱鍵

     

{鼠標控制}

  1. MouseGetCursor()
    ;取鼠標指針類型
    MouseGetPos()
    ;取鼠標坐標
    MouseDown("按鍵")
    ;鼠標按下
    MouseClickDrag("按鍵",第一點橫坐標,第一點縱坐標,第二點橫坐標,第二點縱坐標[,速度])
    ;鼠標按住拖動
    MouseClick("按鍵"[,橫坐標,縱坐標[,次數[,速度]]])
    ;鼠標點擊
    MouseUp("按鍵")
    ;鼠標放開
    MouseMove(橫坐標,縱坐標[,速度])
    ;鼠標移動

    {數學函數}

  2. Exp(n)
    ;e的n次平方
    BitNOT(數值)
    ;非運算
    BitOR(值1,值2)
    ;或運算
    Log(數字或數學表達式)
    ;取對數
    ACos(數字或數學表達式)
    ;取反余弦
    ATan(數字或數學表達式)
    ;取反正切
    ASin(數字或數學表達式)
    ;取反正弦
    Abs(數字或數學表達式)
    ;取絕對值
    Mod(值1,值2)
    ;取模數
    Sqrt(數字或數學表達式)
    ;取平方根
    Random([[最小值,]最大值])
    ;取隨機數
    Cos(數字或數學表達式)
    ;取余弦
    Tan(數字或數學表達式)
    ;取正切
    Sin(數字或數學表達式)
    ;取正弦
    Round(數字或數學表達式[,小數點后保留位數])
    ;四舍五入
    BitXOR(值1,值2)
    ;位或運算
    BitShift(值,移動數)
    ;位移運算
    BitAND(值1,值2)
    ;與運算

    {信息框,對話框}

  3. ProgressOn("標題","主文本"[,"子文本"[,橫坐標[,縱坐標[,選項]]]])
    ;打開進度條窗口
    ProgressOff()
    ;關閉進度條窗口
    SplashOff()
    ;關閉置頂窗口
    ProgressSet(進度值[,"子文本"[,"主文本"]])
    ;進度設置
    InputBox("標題","提示"[,"缺省文本"[,"密碼符號"[,寬度,高度[,左邊,右邊[,等待時間]]]]])
    ;輸入框
    MsgBox(按鈕參數,"標題","信息文本"[,等待時間])
    ;信息框
    SplashImageOn("標題","圖像文件名"[,寬度[,高度[,橫坐標[,縱坐標[,選項]]]]])
    ;置頂圖像窗口
    SplashTextOn("標題","文本"[,寬度[,高度[,橫坐標[,縱坐標[,選項[,"字體名稱"[,"字體大小"[,"字體重量"]]]]]]]])
    ;置頂文本窗口
    ToolTip("提示文本"[,橫坐標,縱坐標])
    ;置提示文本
    TrayTip("標題","提示文本",等待時間[,圖標選項])
    ;置托盤氣泡提示(2000/xp)

    {系統函數}

SoundPlay("文件名"[,等待方式])
;播放聲音
Call("自定義功能函數")
;調用自定義功能函數
CDTray("盤符","開關命令")
;光驅開關
AdlibEnable("自定義功能函數"[,間隔時間])
;激活意外窗口處理
TimerStop(時間標志)
;計時結束
TimerStart()
;計時開始
Exit(0)
;結束
AdlibDisable()
;禁止意外窗口處理
BlockInput(參數)
;禁止用戶輸入
Break(參數)
;禁止用戶退出
MemGetStats()
;取內存狀態
AutoItWinGetTitle()
;取系統窗口標題
PixelGetRGB(橫坐標,縱坐標)
;取像素點RGB三色
PixelGetColor(橫坐標,縱坐標)
;取像素點顏色
PixelSearch(左邊,頂邊,右邊,底邊,顏色值[,shade-variation][,間隔像素數]])
;搜索顏色
URLDownloadToFile("連接地址及文件名","存儲到的文件名")
;下載文件
SetError(值)
;置變量@error
AutoItWinSetTitle("新標題")
;置系統窗口標題
SoundSetWaveVolume(音量大小)
;置音量

{進程管理}

  1. ProcessWait("進程"[,等待時間])
    ;等待進程存在
    ProcessWaitClose("進程"[,等待時間])
    ;等待進程關閉
    ProcessClose("進程")
    ;關閉進程
    Shutdown(關機方式)
    ;關機
    ProcessExists("進程")
    ;進程是否存在
    Sleep(時間)
    ;睡眠/暫停運行
    RunAsSet(["用戶名","domain","密碼"])
    ;以別人身份登錄運行
    RunWait(@ComSpec&"/c"&'DOS命令行',"",參數)
    ;運行DOS命令
    RunWait("文件名"[,"工作目錄"[,參數]])
    ;運行並等待結束
    Run("文件名"[,"工作目錄"[,參數]])
    ;運行程序

    {注冊表管理}

  2. RegRead("鍵路徑","鍵名")
    ;讀鍵值
    RegDelete("鍵路徑"[,"鍵名"])
    ;刪除鍵
    RegWrite("鍵路徑","鍵名","類型",值)
    ;寫鍵值

    {字符串管理}

  3. StringFormat("格式",$var1[,...$var32])
    ;格式化字符串
    StringLen("字符串")
    ;取長度
    StringRight("字符串",字符數)
    ;取右邊
    StringMid("字符串",開始位置,字符數)
    ;取中間
    StringLeft("字符串",字符數)
    ;取左邊
    StringStripCR("字符串")
    ;刪除回車符
    StringStripWS("字符串",參數)
    ;刪除空格
    StringTrimRight("字符串",字符數)
    ;刪除右邊
    StringTrimLeft("字符串",字符數)
    ;刪除左邊
    StringIsASCII("字符串")
    ;是否為ASCII
    StringIsDigit("字符串")
    ;是否為阿拉伯數字
    StringIsUpper("字符串")
    ;是否為大寫
    StringIsFloat("字符串")
    ;是否為浮點小數
    StringIsSpace("字符串")
    ;是否為空
    StringIsXDigit("字符串")
    ;是否為十六進制字符
    StringIsAlNum("字符串")
    ;是否為數字
    StringIsLower("string")
    ;是否為小寫
    StringIsInt("字符串")
    ;是否為整數
    StringIsAlpha("字符串")
    ;是否為字母
    StringAddCR("字符串")
    ;添加換行符
    StringReplace("字符串","查找的字符串","替換后的字符串"[,數量[,區分大小寫]])
    ;文本替換
    StringUpper("字符串")
    ;轉換為大寫
    StringLower("字符串")
    ;轉換為小寫
    StringInStr("字符串","字符"[,大小寫])
    ;字符包含
    StringSplit("字符串","參考符")
    ;字符串分離

    {變量與轉換函數}

  4. IsDeclared(變量)
    ;變量是否被聲明
    Asc("字符")
    ;取Asc碼
    Eval(變量或表達式)
    ;取變量值
    UBound(數組名[,維數])
    ;取數組大小
    Int(小數或表達式)
    ;取整
    Chr(ASC碼)
    ;取字符
    IsAdmin()
    ;是否為管理員
    IsNumber(變量)
    ;是否為數字
    IsArray(變量)
    ;是否為數組
    IsFloat(變量或數值)
    ;是否為小數
    IsInt(變量或數值)
    ;是否為整數
    IsString(變量)
    ;是否為字符
    Dec("十六進制")
    ;轉換為十進制
    Hex(十進制數,長度)
    ;轉換為十六進制
    Number(表達式)
    ;轉換為數字
    String(表達式)
    ;轉換為字符

    {窗口管理}

  5. WinExists("標題"[,"文字"])
    ;窗口是否存在
    WinActive("標題"[,"文字"])
    ;窗口是否激活
    WinSetOnTop("標題","文字",參數)
    ;窗口置頂
    WinWait("標題"[,"文字"[,等待時間]])
    ;等待窗口出現
    WinWaitClose("標題"[,"文字"[,等待時間]])
    ;等待窗口關閉
    WinWaitActive("標題"[,"文字"[,等待時間]])
    ;等待窗口激活
    WinWaitNotActive("標題"[,"文字"[,等待時間]])
    ;等待窗口取消激活狀態
    WinMenuSelectItem("標題","文字","菜單項1"[,"菜單項2"[,"菜單項3"……]])
    ;調用菜單
    WinClose("標題"[,"文字"])
    ;關閉窗口
    WinMinimizeAllUndo()
    ;恢復“全部最小化”的窗口
    WinActivate("標題"[,"文字"])
    ;激活窗口
    WinKill("標題"[,"文字"])
    ;強制關閉窗口
    WinGetTitle("標題"[,"文字"])
    ;取窗口標題
    WinGetHandle("標題"[,"文字"])
    ;取窗口句柄
    WinGetClientSize("標題"[,"文字"])
    ;取窗口客戶區大小
    WinGetClassList("標題"[,"文字"])
    ;取窗口類列表
    WinGetText("標題"[,"文字"])
    ;取窗口文字
    WinGetCaretPos()
    ;取窗口中控件坐標
    WinGetState("標題"[,"文字"])
    ;取窗口狀態
    WinGetPos("標題"[,"文字"])
    ;取窗口坐標
    WinMinimizeAll()
    ;全部最小化
    WinMove("標題","文字",橫坐標,縱坐標[,寬度[,高度]])
    ;移動窗口
    WinSetTitle("標題","文字","新標題")
    ;置窗口標題
    WinSetState("標題","文字",參數)
    ;置窗口狀態

    {控制管理}

  6. ControlCommand("窗口標題","窗口文字","控件類名稱","命令","選項")
    ;發送控制命令
    ControlSend("窗口標題","窗口文字","控件類名稱","文本"[,參數])
    ;發送文本到控件
    ControlDisable("窗口標題","窗口文字","控件類名稱")
    ;禁止控件
    ControlGetFocus("窗口標題"[,"窗口文字"])
    ;取焦點控件的類名稱
    ControlGetPos("窗口標題","窗口文字","控件類名稱")
    ;取控件位置
    ControlGetText("窗口標題","窗口文字","控件類名稱")
    ;取控件文字
    StatusbarGetText("窗口標題"[,"窗口文字"[,狀態欄部分]])
    ;取狀態欄文本
    ControlSetText("窗口標題","窗口文字","控件類名稱","新文本")
    ;設置控件文本
    ControlClick("窗口標題","窗口文字","控件類名稱"[,鼠標按鍵][,點擊次數]])
    ;鼠標點擊控件
    ControlShow("窗口標題","窗口文字","控件類名稱")
    ;顯示控件
    ControlMove("窗口標題","窗口文字","控件類名稱",橫坐標,縱坐標[,寬度[,高度]])
    ;移動控件
    ControlHide("窗口標題","窗口文字","控件類名稱")
    ;隱藏控件
    ControlEnable("窗口標題","窗口文字","控件類名稱")
    ;允許控進
    ControlFocus("窗口標題","窗口文字","控件類名稱")
    ;置焦點

    {系統設置}

AutoItSetOption("MustDeclareVars",參數)
;變量是否預先聲明
AutoItSetOption("WinTitleMatchMode",參數)
;標題匹配方式
AutoItSetOption("WinWaitDelay",參數)
;窗口等待延遲
AutoItSetOption("SendAttachMode",參數)
;發送跟隨模式
AutoItSetOption("SendKeyDelay",參數)
;發送延遲
AutoItSetOption("CaretCoordMode",參數)
;符號坐標匹配方式
AutoItSetOption("SendCapslockMode",參數)
;恢復大小寫狀態
AutoItSetOption("WinDetectHiddenText",參數)
;檢測隱藏文字
AutoItSetOption("WinSearchChildren",參數)
;檢測子窗口
AutoItSetOption("SendKeyDownDelay",參數)
;鍵盤按下延遲
AutoItSetOption("MouseClickDownDelay",參數)
;鼠標按下延遲
AutoItSetOption("MouseClickDelay",參數)
;鼠標單擊延遲
AutoItSetOption("MouseClickDragDelay",參數)
;鼠標拖動延遲
AutoItSetOption("MouseCoordMode",參數)
;鼠標坐標匹配方式
AutoItSetOption("ExpandEnvStrings",參數)
;特殊符號擴展
AutoItSetOption("TrayIconDebug",參數)
;托盤代碼提示
AutoItSetOption("WinTextMatchMode",參數)
;文字匹配方式
AutoItSetOption("PixelCoordMode",參數)
;像素點坐標匹配方式
AutoItSetOption("TrayIconHide",參數)
;隱藏托盤
AutoItSetOption("RunErrorsFatal",參數)
;遇錯終止

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM