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")

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值