• 如何使用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	sbcDesktop2015年春季课程采集文件.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",参数)
    ;遇错终止



  • 相关阅读:
    21.栈的压入、弹出序列(python)
    19.顺时针打印矩阵(python)
    18.二叉树的镜像(python)
    [leetcode] 82. 删除排序链表中的重复元素 II
    [leetcode] 83. 删除排序链表中的重复元素
    [leetcode] 81. 搜索旋转排序数组 II
    [leetcode] 80. 删除排序数组中的重复项 II
    [leetcode] 208. 实现 Trie (前缀树)(Java)
    [leetcode] 212. 单词搜索 II(Java)
    [leetcode] 79. 单词搜索
  • 原文地址:https://www.cnblogs.com/tsbc/p/4372701.html
Copyright © 2020-2023  润新知