您的位置:首页 > 编程语言 > Python开发

python+selenium使用AutoIt实现文件、图片上传

2020-06-30 09:33 99 查看

AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。

官方网站:https://www.autoitscript.com/site/

从网站上下载AutoIt并安装,安装完成在菜单中会看到如下目录:

AutoIt Windows Info 用于帮助我们识Windows控件信息。

Compile Script to.exe 用于将AutoIt生成 exe 执行文件。

Run Script 用于执行AutoIt脚本。

SciTE Script Editor 用于编写AutoIt脚本。

1、首先打开AutoIt Windows Info 工具,鼠标点击Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上。

如图上图,通过AutoIt Windows Info 获得以下信息。

窗口的title为“选择要加载的文件”,标题的Class为“#32770”。

文件名输入框的class 为“Edit”,Instance为“1” ,所以ClassnameNN为“Edit1”。

打开按钮的class 为“Button”,Instance为“1” ,所以ClassnameNN为“Button1”
2、根据AutoIt Windows Info 所识别到的控件信息打开SciTE Script Editor编辑器,编写脚本

WinActivate("打开")
ControlFocus("打开","","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("打开","","Edit1","E:\pythonDemo\DemoUI\report\screenshot\11.png")
Sleep(2000)
ControlClick("打开","","Button1")
Sleep(2000)

ControlFocus()方法用于识别Window窗口。WinWait()设置10秒钟用于等待窗口的显示,其用法与WebDriver 所提供的implicitly_wait()类似。ControlSetText()用于向“文件名”输入框内输入本地文件的路径。这里的Sleep()方法与Python中time模块提供的Sleep()方法用法一样,不过它是以毫秒为单位,Sleep(2000)表示固定休眠2000毫秒。ControlClick()用于点击上传窗口中的“打开”按钮。

AutoIt的脚本已经写好了,可以通过菜单栏“Tools”–>“Go” (或按键盘F5)来运行一个脚本吧!注意在运行时上传窗口当前处于打开状态。

另网上找的一个将浏览器,待上传的文件名作为参数调用的代码

;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获              取到的
ControlClick($title,"","Button1")                ;点击保存或者打开或者上传按钮,此“Button1”使用FinderTool获取到的
Else
Return False
EndIf
EndFunc

3、脚本运行正常,将其保存为upload.au3,这里保存的脚本可以通过Run Script 工具将其打开运行,但我们的目的是希望这个脚本被Python程序调用,那么就需要将其生成exe程序。打开Compile Script to.exe工具,将其生成为exe可执行文件。如图下图:

点击“Browse”选择upload.au3文件,点击“Convert”按钮将其生成为upload.exe程序

4、下面就是通过自动化测试脚本调用upfile.exe程序实现上传了

import os
……

d.find_element_by_xpath('//[@id="terminalForm"]/div/div[2]/div[1]/div/button/span').click()
os.system("upload.exe")  # 调用upload.exe上传程序

Python先导入os,然后通过os模块的system()方法可以调用exe程序并执行

# 带参数时python调用
import os
……
cmd = r"exe\222.exe" + ' ' + "chrome" + ' ' + r"E:\pythonDemo\DemoUI\report\screenshot\11.png"
os.system(cmd)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: