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盘 ...
随机推荐
- PHP is_writable() 函数
定义和用法 is_writable() 函数检查指定的文件是否可写. 如果文件可写,该函数返回 TRUE. 语法 is_writable(file) 参数 描述 file 必需.规定要检查的文件. 提 ...
- PHP bindec() 函数
实例 把二进制转换为十进制: <?phpecho bindec("0011") . "<br>";echo bindec("01&q ...
- luogu P3761 [TJOI2017]城市 树的直径 bfs
LINK:城市 谢邀,学弟说的一道毒瘤题. 没有真正的省选题目毒瘤 或者说 写O(n)的做法确实毒瘤. 这里给一个花20min就写完的非常好写的暴力. 容易想到枚举哪条边删掉 删掉之后考虑在哪两个点上 ...
- x86架构:保护模式下加载并运行用户程序
本章的代码分3个模块: MBR 引导:加载内核core程序 core:包含内核代码段(从磁盘加载用户程序并重定位).内核数据段(存放api名称.临时缓冲.字符串等).API段(供用户程序调用) 用户程 ...
- 【NOIP2016】组合数问题 题解(组合数学+递推)
题目链接 题目大意:给定$n,m,k$,求满足$k|C_i^j$的$C_i^j$的个数.$(0\leq i\leq n,1\leq j\leq \min(i,m))$. --------------- ...
- SpringCloud系列之服务容错保护Netflix Hystrix
1. 什么是雪崩效应? 微服务环境,各服务之间是经常相互依赖的,如果某个不可用,很容易引起连锁效应,造成整个系统的不可用,这种现象称为服务雪崩效应. 如图,引用国外网站的图例:https://www. ...
- 用 Python 写个消消乐小游戏
提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 很多人学习python,不 ...
- MyBatisPlus性能分析插件,条件构造器,代码自动生成器详解
性能分析插件 我们在平时的开发中,会遇到一些慢sql,测试,druid MP(MyBatisPlus)也提供性能分析插件,如果超过这个时间就停止 不过官方在3.2版本的时候取消了,原因如下 条件构造器 ...
- Bytom Dapp 开发笔记(二):开发流程
简介 这章的内容详细分析一下涉及智能合约Dapp的整个开发流程,注意是涉及只能合约,如果你只要一些基本转BTM功能没有太大意义,本内容补充一下官方提供的 比原链DAPP开发流程,详细实践过好踩到的一些 ...
- 一篇文章快速搞懂什么是GitHub
导读:什么是GitHub?Git与GitHub之间是什么关系?我们为什么需要版本控制系统?GitHub如何使用?本文将带你一探究竟. 本文字数:1710,阅读时长大约:13分钟 一.什么是版本控制 按 ...