web自动化测试图片上传的两种方法

web自动化测试图片上传的两种方法:

通过input标签的,如:

<!DOCTYPE html> 
<html lang="en"> 
 <head> 
  <title>filetest!</title> 
  <metacharset="utf-8"> 
 </head> 
 <body> 
  <pstyle="color:blue;text-align:left;font-size:30px;">请上传一个文件:</p> 
  <formaction="" method="get" id="myform"> 
   <inputtype="file" name="file" accept=""multiple="multiple"> 
  </form> 
 </body> 
</html>

这类可以通过selenium直接实现:

from selenium import webdriver 
 
driver = webdriver.Firefox() 
driver.get(r"http://192.168.225.137/html5/file.html") 
#通过send_keys()上传 
driver.find_element_by_css_selector("[type='file']").send_keys("C:\\Users\\Administrator\\Desktop\\html5.txt") 

selenium借助autoIt工具实现上传

对于不是input框实现的上传怎么办,这种上传千奇百怪,有用a标签的,有用div的,有用button的,有用object的,我们没有办法通过直接在网页上处理掉这些上传,唯一的办法就是打开OS弹框,去处理弹框。

OS弹框涉及的层面已经不是selenium能解决的了,怎么办?很简单,用OS层面的操作去处理呗,利用autoIT工具可以。

autoIT的介绍

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

处理思路

1.    利用AutoIT编写合适的脚本,然后将脚本编译成可执行文件;

2.    AutoIT脚本编译成可执行文件后,放到本地的某一个目录下;

3.    需要上传图片时,首先定位到【上传】字样文本,点击此按钮,打开os窗口;

4.    执行编辑后的可执行文件,实现文件上传;

备注:编写脚本和编译,需要借助AutoIT提供的工具,但是脚本编译成可执行文件后,可以直接使用,不再需要安装AutoIT。

前端上传文件实例:


#下面是上传图片的
#打开os窗口
driver.find_element_by_xpath(".//*[@id='uploader-demo']/div/div").click()
#上传经过autoIT编译好的exe文件
os.system(r".\files_exe\mrw_pic.exe")
sleep(2)

AutoIT安装

下载并安装AutoIT,下载链接:https://www.autoitscript.com/site/autoit/
AutoIT安装成功后,可以在开始菜单下看到AutoIT的所有工具,如下图所示:


  • AutoIt Windows Info   用于帮助我们识Windows控件信息。
  • Compile Script to.exe 用于将AutoIt生成 exe 执行文件。
  • Run Script            用于执行AutoIt脚本。
  • SciTE Script Editor   用于编写AutoIt脚本。

AutoIt Window Info 

打开此工具,利用此工具来识别Windows控件信息,如输入框、按钮等。

1、首先打开AutoIt Windows Info 工具,鼠标点击Finder Tool,按住鼠标左键拖动到需要识别的控件上。

通过识别可知道:

  • 窗口的title为“文件上传”,标题的Class为“#32770”。
  • 文件名输入框的class 为“Edit”,Instance为“1” ,所以ClassnameNN为“Edit1”。
  • 打开按钮的class 为“Button”,Instance为“1” ,所以ClassnameNN为“Button1”。

SciTE Script Editor 

根据以上所识别的空间信息,利用此编辑器,利用此软件根据AutoIT的语法编写脚本。
附实现文件上传需要的几个方法:  

  • ControlFocus ( "窗口标题", "窗口文本", 控件ID)   设置输入焦点到指定窗口的某个控件上
  • WinWait ( "窗口标题" [, "窗口文本" [, 超时时间]] )  暂停脚本的执行直至指定窗口存在(出现)为止
  • ControlSetText ( "窗口标题", "窗口文本", 控件ID, "新文本" )   修改指定控件的文本
  • Sleep ( 延迟 )   使脚本暂停指定时间段
  • ControlClick ( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]] )   向指定控件发送鼠标点击命令
  • 其中,title即AutoIt Window Info识别出的Title字段,controlID即AutoIt Window Info识别出的Class和Instance的拼接,如上图拼接后的结果应为:Button1

;ControlFocus( "窗口标题", "窗口文本", 控件ID) 设置输入焦点到指定窗口的某个控件上
ControlFocus("打开","","Edit1")
;WinWait( "窗口标题" [, "窗口文本" [, 超时时间]] )  暂停脚本的执行直至指定窗口存在(出现)为止
WinWait("打开","",10)
;ControlSetText( "窗口标题", "窗口文本", 控件ID, "新文本" )   修改指定控件的文本
ControlSetText("打开","","Edit1","C:\Users\Administrator\Desktop\工作\测试截图\3.png")
;Sleep( 延迟 )   使脚本暂停指定时间段,这里是以毫秒为单位的
Sleep(1000)
;ControlClick( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]])   向指定控件发送鼠标点击命令
ControlClick("打开","","Button1")

 AutoIT脚本编写完成后,保存,可以通过菜单栏“Tools”-->“Go” 或F5运行一下脚本。

注意:运行的时候,上传窗口需处于打开状态。

Compile Script to.exe

 脚本编辑运行无误后,将其保存。然后打开Complie Script to .exe工具,将保存的脚本编译成exe可执行文件。


 通过Python 的os模块的system()方法可以调用exe程序并执行。
了解了上传的实现过程,那么下载也是一样的。

 

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页