python autoit上传文件_自动化测试——之autoit上传文件

使用autoit脚本上传方式:

由于有的上传控件不是input元素,所以send_keys不可用。此时可以通过autoit来帮助我们实现上传功能,先了解下什么是autoit。它是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows

GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。而这是其它语言不可能做到或无可靠方法实现的。

很多版本,下载全部安装这个。

2、安装完成后,到安装目录下,启动autoit程序(选择适合自己的系统版本)。

启动后界面:

3、打开你所要上传文件的应用,我这里有一个测试用的网址,可以在这里练习。http://fex-team.github.io/webuploader/demo.html。autoit在这里只负责上传,因此需要已经弹出windows弹窗。

弹窗需要注意的地方就是弹窗名称“文件上传”、“文件名”和“打开”按钮,后面讲原因。

5、然后找切换到刚才打开的AutoIt

Window Info 工具,找到Finder Tool:然后用鼠标拖动此图标到文件上传弹窗的

“文件名输入框”:

记下ClassnameNN的Value值,这里是“Edit1”。

然后用鼠标拖动此图标到文件上传弹窗的

“打开” 按钮上:

记下ClassnameNN的Value值,这里是“Button1”。

6、打开安装目录下的SciTE

Script Editor应用程序,打开该程序。

粘贴下列代码:

;first make sure the number of arguments passed into the

scripts is more than 1

If $CmdLine[0]<2 Then Exit EndIf ;if parmas num <2 ,then

break

;$CmdLine[0] ;参数的数量

;$CmdLine[1] ;第一个参数 (脚本名称后面)

;$CmdLine[2] ;第二个参数

;都是从cmd传入参数

handleUpload($CmdLine[1],$CmdLine[2])

;定义上传函数,有两个参数,第一个是浏览器名字,第二参数是文件路径

Func handleUpload($browser,

$uploadfile)

Dim

$title  ;定义一个title变量

;根据弹窗的title来判断是什么浏览器

If

$browser="ie" Then  ; 代表IE浏览器

$title="选择要加载的文件"

ElseIf

$browser="chrome" Then  ; 代表谷歌浏览器

$title="打开"

ElseIf

$browser="firefox" Then

;

代表火狐浏览器

$title="文件上传"

EndIf

if

WinWait($title,"",4) Then ;等待弹出出现,最大等待时间是4秒

WinActivate($title)  ;找到弹出窗口之后,激活当前窗口

ControlSetText($title,"","Edit1",$uploadfile)

;把文件路径放入输入框,此“Edit1”是用FinderTool获取到的“文件名”输入框的ClassnameNN

ControlClick($title,"","Button1")

;点击保存或者打开或者上传按钮,此“Button1”使用FinderTool获取到的“打开”按钮的ClassnameNN

Else

Return

False

EndIf

EndFunc

将代码粘贴至打开的SciTE

Script Editor应用程序中。

保存该文件到自定义目录下,默认后缀名为.au3。

需要强调的是,autoit是根据弹窗的名字来给文件名输入框赋值和点击按钮等操作的,由于不同的浏览器弹窗的名字可能不一样,这里要谨慎选择。IE为"选择要加载的文件",Chrome为"打开",火狐为“文件上传”。

7、autoit的脚本到此写完了,但是由于我们是在cmd中调用,需要将其转换成exe可执行文件。

打开autoit安装目录下的应用程序:Compile Script to .exe (x86)或者Compile Script to

.exe (x64),根据自身系统。

点击Conver按钮,则成功讲upload.au3脚本转换为运行文件upload.exe,如下图:

8、接下来测试下效果,打开cmd,输入:“F:\py_learn\selenium\uploa.exe”

"firefox" "F:\aa.png"双引号不要省略,每项之间有空格,如图:

之后回到网页,查看刚才的文件已被上传:

注意,运行cmd命令之前,一定要把页面的弹窗弹出,autoit只操作弹窗,不对页面元素定位。

第一个参数的是autoit exe脚本文件,第二是

autoit脚本函数需要的参数,回头看看脚本,一个参数是浏览器名字:chrome或者ie或者firefox,第二个参数是要上传文件的路径,并且都要用英文环境下的双引号括起来,就形成了下面的代码:

“F:\py_learn\selenium\uploa.exe” "firefox" "F:\aa.png"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值