Autoit 使用
一、Autoit 上传文件、
1.常用语法
- WinActivate("title") 聚焦到指定活动窗口
- ControlFocus ( "title", "窗口文本", controlID) 设置输入焦点到指定窗口的某个控件上;
- WinWait ( "title" , "窗口文本" , 超时时间 ) 暂停脚本的执行直至指定窗口存在(出现)为止;
- ControlSetText ( "title", "窗口文本", controlID, "新文本" ) 修改控件的文本,如选择文件
- Sleep ( 延迟 ) 使脚本暂停指定时间,单位是毫秒;
- ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 ) 向指定控件发送鼠标点击命令;
2.windows窗口定位
a. 打开 AutoIt Window Info (x64),

b. 定位工具界面如下:

c. 拖动finder tools到windows 窗口,可定位元素
在autoit工具的control栏可查看,元素信息

3 编写脚本
打开SciTE Script Editor编写脚本

WinActivate("打开")
ControlSetText("打开","","Edit1","C:\Users\wang1\Desktop\test.docx")
Sleep()
ControlClick("打开","","Button1");
编辑完后运行(菜单Tools --go),可看到文件上传成功
注意需要先打开如下图的文件选择框,再运行脚本或exe文件,才能成功

4 将脚本导出为.exe文件
a. 将编写好的脚本保存
b. 右键脚本,选择 compile Script,即可生成exe文件

二、文件上传的参数化
可通过autoit的命令行参数,实现参数化
aa.exe param1 “This is a string parameter” 666
aa.exe: 生成的可执行autoit的exe文件
param1 “This is a string parameter” 666: 传入三个参数,参数1: param1 ,参数2:“This is a string parameter” ,参数3: 666
注意:如果传入的参数有空格,则参数必须用双引号括起来
aa.exe param1 “This is a string parameter” 666:
$CmdLine[0] : 表示传入的参数的个数(不包括脚本文件名),本例中值为3
$CmdLine[1] : 表示第 1 个参数,本例中表示 param1
$CmdLine[2] : 表示第 2 个参数,本例中表示 “This is a string parameter”
...
我们常用 $CmdLine[$CmdLine[0]] 来表示最后一个参数...
除了$CmdLine之外,还有一个变量叫做 $CmdLineRaw,它保存着完整的未被拆分的命令行语句,对于上面这个例子
$CmdLineRaw 等价于..aa.exe param1 “This is a string parameter” 666
将以下脚本保存为exe文件,在cmd下执行该文件
WinActivate("打开")
ControlSetText("打开","","Edit1", $CmdLine[])
Sleep(500)
ControlClick("打开","","Button1");
命令运行前:

命令运行后:

三 python 运行exe文件
def upload_agreement_copy(self):
"""
# 这是第二种,通过walk函数,返回root(路径),dirs(子目录),files(文件名)三个元组,本例中我们用walk来遍历
返回值:函数返回一个元组,含有三个元素。这三个元素分别是:每次遍历的路径名、路径下子目录列表、目录下文件列表。 # 先要遍历文件夹
path = r'd:\1' # 定义路径,OS提供了两种遍历文件夹的办法
# files1 = os.listdir(path)
# # 这是第一种,会遍历路径下所有文件包括子文件夹,结果以列表给出,但仅仅能给出文件名/子文件名,无法对二者进行区分
# # for file in files1:
# # print(os.path.join(path,file))
files2 = os.walk(path)
"""
file_path = self.sign_contracts.get_ini_value("sign_contracts_v4.ini", "basic","agreement_copy_file")
css_agreement_copy = self.sign_contracts.get_ini_value("sign_contracts_v4.ini", "basic","agreement_copy")
js_agreement_copy_browse = self.sign_contracts.get_ini_value("sign_contracts_v4.ini", "basic","js_agreement_copy_browse") doc_list = []
for root, dirs, files in os.walk(file_path):
for doc in files:
if doc.endswith(".docx") or doc.endswith(".doc"):
doc_file_path = os.path.join(root, doc)
doc_list.append(doc_file_path)
choice = random.choice(doc_list)
self.driver.click(css_agreement_copy)
self.driver.executeJS(js_agreement_copy_browse)
time.sleep(1.5) #方式一:全路径运行
# os.system(r"E:\HP\PycharmProjects\JDMerchant\config\upload_file.exe %s"%choice) #方式二
exe_file = self.sign_contracts_v4_config.get_file_path("upload_file.exe")
#只有这种试才能运行成功
os.system("%s %s"%(exe_file,choice))
log.info("输入的agreement_copy值为:" + choice)
time.sleep(self.time_wait_upload)
Autoit 使用的更多相关文章
- AutoIt实现Webdriver自动化测试文件上传
在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口. Auto ...
- Autoit中用PrintWindow替代ScreenCapture函数实现截图
想截取躲在后面的窗体或控件,找到了PrintWindow函数,幸运的是Autoit3也对此进行了封装以方便使用. 于是乎,将帮助文件里的_WinAPI_PrintWindow()实例改写了一下,以替代 ...
- 对AutoIt中控件和窗口的理解
经过尝试,对AutoIt中Control和Window有了新的认识,分享一下 1.Control 现在我想对一个WinForm架构的应用程序进行自动化操作,得到控件Advanced Mode属性为[N ...
- selenium webdriver 右键另存为下载文件(结合robot and autoIt)
首先感谢Lakshay Sharma 大神的指导 最近一直在研究selenium webdriver右键菜单,发现selenium webdriver 无法操作浏览器右键菜单,如图 如果我想右键另存为 ...
- AutoIt操作Windows GUI实现文件上传
AutoIt 一个使用类似BASIC脚本语言的免费软件,用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务. 官方网站: htt ...
- PyAutoGUI-python版的autoit/AHK
简单介绍各个图形界面自动操作的python库,类似按键精灵\autoit\ahk(autohotkey)等等这些自动化工具.这类python库不是只是用来实现自动游戏之类的程序,业界也用这些库来做GU ...
- AUTOIT解决域控普通用户以管理员身份安装软件方法
windows域管理,本是很好的管理方式,方便的软件分发,权限控制等功能.不过由于我处软件分发总有那么一些电脑没有成功安装,或是新装的电脑安装软件时漏了安装一些软件,而这些软件需要管理员权限安装的,用 ...
- autoit使用WMIC获取硬件信息
效果图: 直接上源码了 #cs ---------------------------------------------------------------------------- AutoIt ...
- 关于IE9中webdiriver使用autoit上传文件报错
在ie9中, type="file"的元素是通过js打开的 webdirver结合autoit上传文件时,会报拒绝访问的错 sciTE编辑器中是这样写的: #include < ...
- 关于Autoit上传文件的问题
Autoit上传文件需要安装两个软件: 使用这个做文件上传时:在代码中需要添加的代码如下: Runtime.getRuntime().exec("d:/zhpg.exe"); D盘 ...
随机推荐
- Metal 线宽如何选择
https://www.cnblogs.com/yeungchie/ Metal 线宽如何选择 假如Metal是为了传输电流,则主要需要从解决和减小它的寄生电阻.寄生电容方面多做考虑.寄生电感一般忽略 ...
- async和await的使用总结 ~ 竟然一直用错了c#中的async和await的使用。。
对于c#中的async和await的使用,没想到我一直竟然都有一个错误.. ..还是总结太少,这里记录下. 这里以做早餐为例 流程如下: 倒一杯咖啡. 加热平底锅,然后煎两个鸡蛋. 煎三片培根. 烤两 ...
- Spring 注解学习 详细代码示例
学习Sping注解,编写示例,最终整理成文章.如有错误,请指出. 该文章主要是针对新手的简单使用示例,讲述如何使用该注释,没有过多的原理解析. 已整理的注解请看右侧目录.写的示例代码也会在结尾附出. ...
- 《计算机存储与外设》 1Cache存储器与虚拟存储器
初读这本书,是2020年3,4月吧,以前学的大多数处理器,balabala的,虽然也有介绍储存器的,但总是不是很详细,主要还是关注cpu等计算部件或者总线等事物,就如同这本书中所写,人们往往可以很清楚 ...
- Maven常见异常及解决方法---测试代码编译错误
[ERROR] Please refer to E:\maven\web_nanchang\target\surefire-reports for the individual test result ...
- java中ThrealLocal的理解
目录 java中threadlocal的理解 一.threadlocal的生命周期和ThreadLocalMap的生命周期 二.ThreadLocal的作用 三.threadlocal示例 四.Inh ...
- 字段解析之OopMapBlock(4)
OopMapBlock是一个简单的内嵌在Klass里面的数据结构,用来描述oop中包含的引用类型属性,即该oop所引用的其他oop在oop中的内存分布,然后就可以根据当前oop的地址找到所有引用的其他 ...
- C# 委托 应用实例
用一句话解释委托:委托是一种可以把引用存储为函数的类型. 有些类似Spring框架对于接口的用法,向Action中注入Service对象.Action并不知道调用哪个服务层,只有容器通过配置文件 向A ...
- 从零搭建Spring Boot脚手架(5):整合 Mybatis Plus
1. 前言 在上一文中我根据Mybatis中Mapper的生命周期手动实现了一个简单的通用Mapper功能,但是遗憾的是它缺乏实际生产的检验.因此我选择更加成熟的一个Mybatis开发增强包.它就是已 ...
- C#LeetCode刷题之#876-链表的中间结点(Middle of the Linked List)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3836 访问. 给定一个带有头结点 head 的非空单链表,返回链 ...