python autoit3_利用AutoIt3多参数化上传图片--java 和python的引用
1. 三方工具安装
autoit-v3-setup下载地址
如果打不开可以直接通过云盘下载:百度云盘链接地址 提取码:fdnz
安装过程直接下一步就行(注意下选择32位还是64位)
2. autoit-v3的使用
话不多说先直接上代码:
ControlFocus("打开","","Edit1")
WinWait("[CLASS:#32770]","","10")
ControlSetText("打开","","Edit1",$CmdLineRaw)
Sleep(100)
ControlClick("打开","","Button1")
然后在开始–程序找到 Autolt Window Info 打开,位数自己选择
打开后看到如下界面:
代码解释:
第一行代码:ControlFocus(“打开”,"",“Edit1”)
ControlFocus ( “title”, “窗口文本”, controlID) 设置输入焦点到指定窗口的某个控件上。这里的“窗口文本”可以不写
第二行代码:WinWait("[CLASS:#32770]","",“10”)
WinWait ( “title题” , “窗口文本” , 超时时间 ) 暂停脚本的执行直至指定窗口存在(出现)为止;这里的“窗口文本”可以不写
第三行代码:ControlSetText(“打开”,"",“Edit1”,$ CmdLineRaw)
ControlSetText ( “title”, “窗口文本”, controlID, “新文本” ) 修改指定控件的文本;这里的“窗口文本”可以不写。$CmdLineRaw是什么意思后面讲
第五行代码:ControlClick(“打开”,"",“Button1”)
ControlClick ( “title”, “窗口文本”, 控件ID , 按钮 , 点击次数 ) 向指定控件发送鼠标点击命令;这里有些参数可以不用写
然进行保存,保存后会生成au3后缀的文件。然后通过Compile Script to .exe
将脚本转化成exe文件。
在工作使用中文件上传的弹窗基本一样,大多数情况只需要下title就可以了,甚至有些时候根本不用修改。
3.python代码调用exe实现文件上传
import os
#path1是exe的路劲。例如:F:\workspace\private_clouds\librarys\filename.exe
#path2是需要上传文件的路径。例如:F:\1.txt
os.system(‘{0} {1}’.format(path1,path2))#注意中间有空格
3.2Java代码调用exe实现文件上传
AutoIt3的脚本如下:
ControlFocus("打开","","Edit1")
WinWait("[CLASS:#32770]","",100) ;等待0.1秒
ControlSetText("打开", "", "Edit1", $CmdLineRaw) ;打开文件目录
WinWait("[CLASS:#32770]","",2000) ;等待0.1秒
;Send("{ENTER}") ;敲回
WinWait("[CLASS:#32770]","",5000) ;等待0.1秒
ControlClick("打开", "","Button1");
JAVA调用方法如下: 引入的名称要加入引号,选中图片后,默认会加入" "
String picName = "d:\\"+"\"图片3.png\" \"图片2.png\"";
Runtime.getRuntime().exec("businessGroup/community-autotest-ui/src/main/resources/uploadCmd.exe " +picName);
4.命令行参数
$CmdLine[0] 获取的是命令行参数的总数,在上例中 $CmdLine[0]=3
$CmdLine[1]~ $CmdLine[63] 获取的是命令行参数第1到第63位,这个方式最多只能获取63个参数,不过正常情况下是足够用的
$CmdLineRaw 获取的是未拆分的所有参数,是一个长字符串,这种情况下不局限与63个参数。
备注:这段资料在网上找的, $CmdLineRaw 参数超过69个好像就不能上传了(个人遇到的仅供参考)
5.上传文件/文件夹
上传单文件:
只需要把第三行代码稍微改一下就行了例如:
ControlSetText(“打开”,"",“Edit1”,“D:\upload_file.txt”)
多文件同时上传(不限个数)
第三行代码:ControlSetText(“打开”,"",“Edit1”,$CmdLineRaw)保持不变。我这里专门写了一个方法,无论你是传入的列表、json还是单个文件,统一将参数格式化为下图的格式。
这里单独说一下参数是json格式时的情况,我这里是在excel写成类似字典的格式
,python读取后是str类型,所有我通过json.loads将其转化为字典类型的。类似下图,注意这里要是英文双引号
格式化代码:
def path_format(self, path):
'''
将多个文件所在位置(路径)进行格式化,转化为指定的格式
:param path: 需要上传文件的路径
:return: 将格式化的文件格式返回 "F:\1.txt" "F:\2.txt" "F:\3.txt"
'''
file_names = ''
if type(path) is list:
for i in path:
file_names = file_names + '"' + i + '"' + ' '
return file_names
else:
try:
data = json.loads(path)
for i in data.values():
file_names = file_names + '"' + i + '"' + ' '
return file_names
except:
return path
def fileUpload(self, path1, path2):
'''
文件上传
:param path1: 文件路径(.au3转换的.exe)
:param path2: 需要上传文件格式,从path_format方法获取
:return:
'''
sleep(2)
path3 = self.path_format(path2)
os.system(path1 + ' ' + path3)
上传文件夹
与上传文件一样,将文件路径换成文件夹路径就可以了
ControlFocus("选择要上传的文件夹","","Edit1")
WinWait("[CLASS:#32770]","","10")
ControlSetText("选择要上传的文件夹","","Edit1",$CmdLineRaw)
Sleep(100)
ControlClick("选择要上传的文件夹","","Button1")
python autoit3_利用AutoIt3多参数化上传图片--java 和python的引用相关推荐
- thrift java长连接_利用thrift在c++、java和python之间相互调用
转自:http://blog.csdn.net/andy_yf/article/details/7487384 thrift做为跨语言调用的方案有高效,支持语言较多,成熟等优点:代码侵入较强是其弱点. ...
- 安卓手机可以用python编程软件-可以在手机上进行Java,Python的编程软件,你用过么?...
今天千锋广州小编给大家简单介绍两个在手机上练习编程的软件,包括Java.Python,主要内容如下: Java: 这里可以使用「"AIDE集成开发环境"」. 这个软件在安卓手机上集 ...
- java和python可以在一个项目中同时使用么-java调用python的几种用法(看这篇就够了)...
java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...
- java和python的web自动化有什么区别-Java 和 Python 有哪些区别?
区别 一.python虚拟机没有java强,java虚拟机是java的核心,python的核心是可以很方便地使用c语言函数或c++库. 二.python是全动态性的,可以在运行时自己修改自己的代码,j ...
- python c java_简单明了看懂JAVA,Python和C+的优劣势
Java由于其优越的跨平台可移植性,在Web开发中是主流语言.在加上手机Android系统的发展,使得java开发人员的需求量很大.同时,Java现在也用来开发手游.Java 的语法相对规范. Pyt ...
- 零基础适合学python吗-零基础更适合学习Java还是python?
原标题:零基础更适合学习Java还是python? 最近有小伙伴向云和数据小编咨询,说想学习一门编程语言,但是没有任何基础,问是学习Java好还是学python更合适?对于这位小伙伴的问题,小编觉得有 ...
- c java python sql是什么意思_SQL、Java、Python、C++ 是当今最顶级的技术?
2019年流行那些技术技能? 现在最需要的技术技能是什么?流行什么技能?通过查看过去五年中Indeed.com上发布的数百万美国技术工作,你就知道答案了. 下面的五张图表示了从2014年的9月至201 ...
- 简单工厂模式(Java、Python)、工厂方法模式(Java、Python)
目录 一.试画出简单工厂模式的模式结构图,并对模式进行分析 1.1 简单工厂模式结构图: 1.2 简单工厂模式的实现(Java) 1.3 简单工厂模式的优缺点 1.4 简单工厂模式实现(Python) ...
- java可以调用python程序吗_我们可以从java调用python方法吗?
是的,那可以做到.通常,这将通过创建PythonInterpreter对象然后使用它来调用python类来完成. 请考虑以下示例: Java: import org.python.core.PyIns ...
最新文章
- mysql error1045 yes_MySQLERROR1045(28000)错误的解决办法_MySQL
- python编程做什么工作-Python能做什么工作?
- GDCM:gdcm::terminal的测试程序
- 通过Rman定期删除归档脚本
- JDK10的新特性:var和匿名类
- [2011山东ACM省赛] Identifiers(模拟)
- c++ stack 遍历_python实现二叉树的遍历以及其他基本操作
- 234C. Weather
- Java注解 编译_Java注解(3)-注解处理器(编译期|RetentionPolicy.SOURCE)
- linux虚拟文件系统(四)-文件系统挂载操作分析
- 7-7 全量复制开销
- 无法完成操作,因为文件包含病毒或潜在的垃圾软件
- windows命令查看无线网密码
- 苏州VS上海:城市化的二个阶段
- Spring Boot系列 - 3. SpringBoot项目学习汇总
- poj3616 Miking Time dp
- 电脑莫名多出一个管理员账户
- 交通违章 处罚[转]
- fedora RPM包下载地址
- lodash的防抖和节流