一、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 使用的更多相关文章

  1. AutoIt实现Webdriver自动化测试文件上传

    在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口. Auto ...

  2. Autoit中用PrintWindow替代ScreenCapture函数实现截图

    想截取躲在后面的窗体或控件,找到了PrintWindow函数,幸运的是Autoit3也对此进行了封装以方便使用. 于是乎,将帮助文件里的_WinAPI_PrintWindow()实例改写了一下,以替代 ...

  3. 对AutoIt中控件和窗口的理解

    经过尝试,对AutoIt中Control和Window有了新的认识,分享一下 1.Control 现在我想对一个WinForm架构的应用程序进行自动化操作,得到控件Advanced Mode属性为[N ...

  4. selenium webdriver 右键另存为下载文件(结合robot and autoIt)

    首先感谢Lakshay Sharma 大神的指导 最近一直在研究selenium webdriver右键菜单,发现selenium webdriver 无法操作浏览器右键菜单,如图 如果我想右键另存为 ...

  5. AutoIt操作Windows GUI实现文件上传

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

  6. PyAutoGUI-python版的autoit/AHK

    简单介绍各个图形界面自动操作的python库,类似按键精灵\autoit\ahk(autohotkey)等等这些自动化工具.这类python库不是只是用来实现自动游戏之类的程序,业界也用这些库来做GU ...

  7. AUTOIT解决域控普通用户以管理员身份安装软件方法

    windows域管理,本是很好的管理方式,方便的软件分发,权限控制等功能.不过由于我处软件分发总有那么一些电脑没有成功安装,或是新装的电脑安装软件时漏了安装一些软件,而这些软件需要管理员权限安装的,用 ...

  8. autoit使用WMIC获取硬件信息

    效果图: 直接上源码了 #cs ---------------------------------------------------------------------------- AutoIt ...

  9. 关于IE9中webdiriver使用autoit上传文件报错

    在ie9中, type="file"的元素是通过js打开的 webdirver结合autoit上传文件时,会报拒绝访问的错 sciTE编辑器中是这样写的: #include < ...

  10. 关于Autoit上传文件的问题

    Autoit上传文件需要安装两个软件: 使用这个做文件上传时:在代码中需要添加的代码如下: Runtime.getRuntime().exec("d:/zhpg.exe"); D盘 ...

随机推荐

  1. PHP jewishtojd() 函数

    ------------恢复内容开始------------ 实例 把犹太历法的日期转换为儒略日计数: <?php$jd=jewishtojd(6,20,2007);echo $jd;?> ...

  2. PHP ftp_quit() 函数

    定义和用法 ftp_quit() 函数关闭 FTP 连接. 语法 ftp_quit(ftp_connection) 参数 描述 ftp_connection 必需.规定要关闭的 FTP 连接. 提示和 ...

  3. PHP highlight_file() 函数

    实例 对测试文件("test.php")进行 PHP 语法高亮显示: <html><body><?phphighlight_file("te ...

  4. 小波变换检测信号突变点的MATLAB实现

    之前在不经意间也有接触过求突变点的问题.在我看来,与其说是求突变点,不如说是我们常常玩的"找不同".给你两幅图像,让你找出两个图像中不同的地方,我认为这其实也是找突变点在生活中的应 ...

  5. python4.2参数传入

    #顺序传入参数def show(name,age,sex,hobby):#形参 print("我叫:",name,"年龄:",age,"性别:&quo ...

  6. C语言学习笔记之一个程序弄清&&、||、i++、++i

     由此程序可以看出, ++a是先执行自加,再把值赋值给c,所以c就是a+1=10+1=11 b++是先做赋值运算,也就是先d=b,再b自加,所以d=b(原先)=5 a和b都执行自加,所以a=11,b= ...

  7. 补充的javascript 数据类型笔记

        <p> 变量名命名规范</p>     由字母,数字,下划线,$组成     严格区分大小写 var app和var App 是两个变量     变量名不能以数字开头 ...

  8. Django 1.8.11 查询数据库返回JSON格式数据

    Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...

  9. XCTF-WEB-高手进阶区-upload1-笔记

    这道题摸索着弄出了两种解法 思路大体都是跳过前端的后缀名过滤从而达到上传一句话木马的目的,之后使用菜刀&蚁剑来进行链接获取Flag <script type="text/jav ...

  10. [BZOJ4237]稻草人 题解

    我们考虑分治一下 按\(x\)坐标排序 然后对于每一段的两部分都按\(y\)排序 左右两边都维护一个单调栈 然后考虑右边对左边的贡献就行了 #include <bits/stdc++.h> ...