AutoIt

一个使用类似BASIC脚本语言的免费软件,用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。

官方网站: https://www.autoitscript.com/site/

从网站上下载AutoIt并安装:

  • AutoIt Windows Info      用于帮助我们识Windows控件信息
  • Compile Script to.exe     用于将AutoIt生成exe执行文件
  • Run Script                    用于执行AutoIt脚本
  • SciTE Script Editor        用于编写AutoIt脚本

以操作上传弹出的窗口为例:

1、首先打开AutoIt Windows Info工具,鼠标点击Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上:

输入框:

打开按钮:

通过AutoIt Windows Info获得以下信息:

  • 窗口的title为“选择要加载的文件” ;标题的 Class 为“#32770”
  • 文件名输入框的class为“Edit”;Instance为“1”,所以ClassnameNN为“Edit1”
  • 打开按钮的class为“Button”;Instance为“1”,所以ClassnameNN为“Button1”

2、根据AutoIt Windows Info所识别到的控件信息打开SciTE Script Editor编辑器,编写脚本:

;ControlFocus("title","text",controlID) Edit1=Edit instance 1
ControlFocus("选择要加载的文件", "","Edit1")
; Wait 10 seconds for the Upload window to appear
WinWait("[CLASS:#32770]","",10)
; Set the File name text on the Edit field
ControlSetText("选择要加载的文件", "", "Edit1", "D:\\upload_file.txt")
Sleep(2000)
; Click on the Open button
ControlClick("选择要加载的文件", "","Button1");

脚本说明:

  • ControlFocus()方法用于识别Window窗口。
  • WinWait()设置10秒钟用于等待窗口的显示
  • ControlSetText()用于向“文件名” 输入框内输入本地文件的路径。
  • Sleep(2000)表示固定休眠2000毫秒。
  • ControlClick()用于点击上传窗口中的“打开” 按钮。

可以通过菜单栏“Tools” -->“Go” (或按键盘 F5)来运行脚本(注意在运行时上传窗口当前处于打开状态)

3、脚本运行正常,将其保存为upfile.au3,这里保存的脚本可以通过Run Script工具将其打开运行,但我们的目的是希望这个脚本被Python程序调用, 那么就需要将其生成exe程序。打开 Compile Script to.exe工具,将其生成为exe可执行文件:

点击“Browse”选择upfile.au3文件,点击“Convert” 按钮将其生成为 upfile.exe 程序。

4、至此就可以通过自动化测试脚本调用upfile.exe程序实现上传了,python脚本调用片段:

#点击打开上传窗口
driver.find_element_by_name("file"). click()
#调用 upfile.exe 上传程序
os.system("D:\\upfile.exe")

AutoIt操作Windows GUI实现文件上传的更多相关文章

  1. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  2. 将windows下的文件上传到Linux服务器上

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lx_Frolf/article/deta ...

  3. Cookie操作、ASP.Net文件上传HttpPostedFile

    概述 Cookie用来保存客户浏览器请求服务器页面的请求信息. 我们可以存放非敏感的用户信息,保存时间可以根据需要设置.如果没有设置Cookie失效日期,它的生命周期保存到关闭浏览器为止,Cookie ...

  4. java操作FTP,实现文件上传下载删除操作

    上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...

  5. windows远程xshell文件上传下载:

    安装:yum install -y lrzsz 上传:rz下载:sz 文件名

  6. Python Selenium 文件上传之Autoit

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...

  7. 采用AutoIt实现文件上传

    在非常规的上传界面中,AutoIt可以操作Windows资源管理器实现上传路径的输入. AutoIt中编辑以下脚本,需通过“AutoIt Windows Info”定位资源管理器路径输入位置信息及打开 ...

  8. PHP文件上传和文件操作案例

    <?php /* *文件配置变量$dirname是目录名称 */ session_start(); $dirname = 'upload'; $fileClass = new fileClass ...

  9. PHP多文件上传操作

    在前一篇文章里讲到了关于PHP文件上传原理和简单操作举例是单文件上传. http://www.cnblogs.com/lichenwei/p/3879566.html 其实多文件上传和单文件上传大同小 ...

随机推荐

  1. what's cloud computing? IaaS

    Cloud computing has changed the ITC industry. Companies like Amazon, Google and Microsoft have built ...

  2. 【Docker】Docker主机为什么ip nets 查不到网络空间

    创建Docker容器后本来应该有新的命名空间(如果有独立网络的话),那么可以通过 ip netns 命令查看到命名空间,但是实际上却看不到. 查过资料才发现,ip netns 只能查看到 /var/r ...

  3. [PHP][位转换积累]之pack和unpack

    一.前面的话 PHP的pack和unpack提供了为一系列数据打包(pack)和解包(unpack)成2进制流的功能,这个功能在面向字节的字符串处理和套接字的编程环境中尤为适用. 在了解这两个函数之前 ...

  4. ACM/ICPC 之 Unix会议室(POJ1087)

    采用EK算法解网络流经典题,本题构图思路比较明确. //Unix会议室插座转换 //网络流-EK算法 //Time:47Ms Memory:1188K #include<iostream> ...

  5. mac tomcat https

    一.HTTPS的基本工作原理: HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.TLS/SSL协议不仅仅是一套加密传输的协议 ...

  6. 【转载】CentOS服务器配置VPN详解

    转载来自: https://bbs.aliyun.com/read/162297.html http://www.wanghailin.cn/centos-7-vpn/ 操作系统:CentOS 6.3 ...

  7. xml Schema 基础

    Schema比DTD好在哪儿? 后者简单易用,前者功能更强大也更复杂.DTD可以定义XML文档的结构,但无法对XML元素的内容进行约束,例如,如果希望某个XML元素的内容只能是日期型的数据,DTD就无 ...

  8. ffmpeg 如何音视频同步

    转自:http://blog.csdn.net/yangzhiloveyou/article/details/8832516 output_example.c 中AV同步的代码如下(我的代码有些修改) ...

  9. 【centOS】账号管理

    一.认识/etc/passwd和/etc/shadow 1.passwd的构造 上图为passwd其中一个用户的用户信息,分别表示为[用户名][密码][UID][GID][注释][家目录][Shell ...

  10. Chart图表

    这东西挺直观 封装个类 public class aaa { private string name; public string Name { get { return name; } set { ...