先看一段代码 upload.au3(这个后缀autoit3的格式):

;等待出现title为数据采集-军课网-MozillaFirefox的浏览器窗口
WinWait("数据采集 - XX网 - Mozilla Firefox","") ;验证窗口是否激活,如没有激活就把窗口激活
IfNotWinActive("数据采集 - XX网 - Mozilla Firefox","")ThenWinActivate("数据采集 - XXX - Mozilla Firefox","") ;等待窗口激活
WinWaitActive("数据采集 - XXX网 - Mozilla Firefox","") ;移动鼠标到要点击元素坐标位置(flash控件按钮)
MouseMove(,) ;按下鼠标左键
MouseDown("left")
;松开鼠标左键会弹出window选择附件的窗口
MouseUp("left") ;等待 title为文件上传的windows窗口出现
WinWait("文件上传","命名空间树控件") ;判断窗口是否激活,如果没有激活,把窗口激活
IfNotWinActive("文件上传","命名空间树控件")ThenWinActivate("文件上传","命名空间树控件") ;等待激活窗口
WinWaitActive("文件上传","命名空间树控件") ;ControlFocus("窗口标题","窗口文字",控件类名称)
;聚焦到 controlID=Edit1的编辑框中(Edit1=Class:EditInstance:)
ControlFocus("文件上传","","Edit1") ;等待1000毫秒
Sleep() ;ControlSetText("窗口标题","窗口文字","控件类名称","新文本")
;为控件设置文本(相当于文本框输入内容)
ControlSetText("文件上传","","Edit1","C:\Users\tsbc\Desktop\2015年春季课程采集文件.docx")
Sleep() ;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("标题","提示文本",等待时间[,图标选项])
    ;置托盘气泡提示(/xp)

    {系统函数}

SoundPlay("文件名"[,等待方式])
;播放声音
Call("自定义功能函数")
;调用自定义功能函数
CDTray("盘符","开关命令")
;光驱开关
AdlibEnable("自定义功能函数"[,间隔时间])
;激活意外窗口处理
TimerStop(时间标志)
;计时结束
TimerStart()
;计时开始
Exit()
;结束
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",参数)
;遇错终止

如何使用Python调用AutoIt来实现Flash控件的上传功能的更多相关文章

  1. js上传插件uploadify自动检测不到flash控件的问题

    [问题描述] 项目开发中,由于使用了js的一个上传插件uploadify,下载的是flash版本的,后来在谷歌浏览器上运行时经常报flash控件未安装,虽然下图是uploadify自动检测自动弹出来的 ...

  2. 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件

    解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题 http://marller.blog.51cto.com/8699646/1762028 FAQ: Surf ...

  3. 基于python的Elasticsearch索引的建立和数据的上传

    这是我的第一篇博客,还请大家多多指点 Thanks ♪(・ω・)ノ         今天我想讲一讲关于Elasticsearch的索引建立,当然提前是你已经安装部署好Elasticsearch. ok ...

  4. PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性不起作用的问题解决办法

    在<PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性>中介绍layout的layoutSizeConstraint属性后,反复测试 ...

  5. python调用c++/c 共享库,开发板上编译的一些坑!

    1.对于python,ctypes只能load动态库,但现在我的对象是一个静态库,而且我没有源代码,静态库在编译过程中没有加--fPIC参数,所以我也没办法将其编译为动态库,有没有什么方法在pytho ...

  6. python3、selenium、autoit3,通过flash控件上传文件

    autoit.au3 #include <Constants.au3> WinWait(); //暂停执行脚本,直到上传对话框出现 WinActive("打开") Wi ...

  7. Python Django缓存,信号,序列化,文件上传,Ajax登录和csrf_token验证

    本节内容 models操作 Django的缓存 请求方式 序列化 Form 配合Ajax实现登录认证 上传文件 Ajax  csrf_token验证方式 1 models操作 单表查询: curd(增 ...

  8. Python实例讲解 -- wxpython 基本的控件 (按钮)

    使用按钮工作 在wxPython 中有很多不同类型的按钮.这一节,我们将讨论文本按钮.位图按钮.开关按钮(toggle buttons )和通用(generic )按钮. 如何生成一个按钮? 在第一部 ...

  9. Python Tkinter参考资料之(通用控件属性)

    大部分控件的共享选项: 选项(别名) 说明 单位 典型值 没有此属性的控件 background(bg) 当控件显示时,给出的正常颜色 color 'gray25''#ff4400'   border ...

随机推荐

  1. 为Eclipse安装主题插件

    方法2:通过站点更新 eclipse:Help->Install New Software->Work with:Update Site -http://eclipse-color-the ...

  2. 数据库表结构对比同步mysqldiff

    开发服务器的数据库表结构进行了修改,或者修改过多,为了与线上的数据库结构同步,可以使用mysqldiff工具对线上数据库打补丁. mysqldiff Windows下载地址:http://dev.my ...

  3. LeetCode Remove Duplicate Letters

    原题链接在这里:https://leetcode.com/problems/remove-duplicate-letters/ 题目: Given a string which contains on ...

  4. Simple JavaScript Inheritance--一个极简JS面向对象-类库

    面向对象 面向对象思想的几个重要特征(针对类的要求): 抽象-封装.信息隐藏(将内部实现的方法和数据隐藏, 定义开放的接口) 继承-子类可以使用父类的资源,并可以定制自己的资源, 资源包括方法和数据 ...

  5. RAC One Node转换为RAC

    1.查看状态 [oracle@rone1 ~]$ srvctl config database -d rone Database unique name: rone Database name: ro ...

  6. PRML读书笔记——2 Probability Distributions

    2.1. Binary Variables 1. Bernoulli distribution, p(x = 1|µ) = µ 2.Binomial distribution + 3.beta dis ...

  7. [翻译] 为什么Uber的数据库从Postgres 切换到 MySql

    Uber工程师团队发布了一个重要的博客文章:他们的数据库从Postgres从移动到MySQL.毫不夸张地说,阅读这篇文章是一种享受,特别是因为他们提到这些细节:磁盘格式和那对他们2个数据库的表现的影响 ...

  8. Markdown 语法和 MWeb 写作使用说明

    ---恢复内容开始--- # Markdown 语法和 MWeb 写作使用说明 Markdown 的设计哲学 Markdown 的目標是實現「易讀易寫」. 不過最需要強調的便是它的可讀性.一份使用 M ...

  9. Java之美[从菜鸟到高手演变]之Spring源码学习 - 环境搭建

    准备工作 1.下载安装STS(Spring Tool Suite),在eclipse market里直接搜索.下载.安装.2.下载安装gradle, Spring源码使用gradle构建,下载后解压到 ...

  10. sprint3终极演示

    目标功能: 已实现功能: 首页.订单.资料界面 首页.订单.资料按钮 化妆师.化妆品.化妆视频按钮 化妆师.化妆品的详细分类 化妆师.化妆品的详细信息显示 化妆师的预约按钮和联系按钮 化妆品的购买按钮 ...