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 array_replace_recursive() 函数
实例 递归地使用第二个数组($a2)的值替换第一个数组($a1)的值: <?php$a1=array("a"=>array("red")," ...
- PHP 获取图像宽度与高度
PHP 获取图像宽度函数:imagesx() imagesx() 函数用于获取图像的宽度,单位为像素,返回值为整型.高佣联盟 www.cgewang.com 语法: int imagesx( reso ...
- PHP stripcslashes() 函数
实例 删除 "World!" 前面的反斜杠: <?php高佣联盟 www.cgewang.comecho stripslashes("Hello World!&qu ...
- css浮动属性
1.为什么需要浮动 HTML中的标签元素大致分为三类:块状元素.内联元素.内联块元素. 每种元素都有其各自的特点,其中块状元素会独占一行,而内联元素和内联块元素则会在一行内显示.如果我们想让两个甚至多 ...
- Java Udp Socket Simple Demo
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import j ...
- JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <% Java代码 %> 相当于写在service方法中. <%=java 变量或者表达式 %> ...
- 利用mvc模式,实现用户的注册
实现功能:利用mvc模式,实现用户的登陆注册功能 1.程序的框架结构 2个包,bean,以及servlet 3个jsp页面,注册页面,注册成功页面,注册失败页面 mysql驱动 2.编程思想 通过js ...
- 从SpringBoot源码分析 配置文件的加载原理和优先级
本文从SpringBoot源码分析 配置文件的加载原理和配置文件的优先级 跟入源码之前,先提一个问题: SpringBoot 既可以加载指定目录下的配置文件获取配置项,也可以通过启动参数( ...
- Unity 入门
- C#LeetCode刷题之#441-排列硬币(Arranging Coins)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3995 访问. 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状 ...