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。

前端上传文件实例:

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可执行文件。

web自动化测试图片上传的两种方法相关推荐

  1. JavaBean实现多个文件上传的两种方法

    JavaBean实现多个文件上传的两种方法 王新芳        刘杰 北京工商大学计算机学院 摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现.首先 ...

  2. Android图片上传的两种方式

    图片上传,以及带参数的图片上传是Android开发中,很常见的需求.但也是接口联调难度相对比较大的技术实现,本文介绍两种可靠的图片上传方式.一是通过 MultipartBody 来实现:二是通过图片转 ...

  3. 图片上传的两种方式(前端和后端)

    1:前端 HTML: <html> <script type="text/javascript" src="js/jquery-3.1.1.min.js ...

  4. 提取图片上文字的两种方法

    目前我整理出两种方法: 第一种是利用onenote 插入照片-->点击图片右键,选择"复制图片中的文本"选项-->在当前onenote的空白处选择粘贴就好了(在其他地方 ...

  5. iOS:图片上传时两种图片压缩方式的比较

    上传图片不全面的想法:把图片保存到本地,然后把图片的路径上传到服务器,最后又由服务器把路径返回,这种方式不具有扩展性,如果用户换了手机,那么新手机的沙盒中就没有服务器返回的图片路径了,此时就无法获取之 ...

  6. Typora+PicGo+又拍云实现图片快速上传的两种方法

    Typora+PicGo+又拍云实现图片快速上传 第一步:注册个又拍云账户,加入又拍云联盟 又拍云 官网注册地址:又拍云联盟 - 开发者帮助计划,为开发者加速 - 又拍云 注册认证后有 10G 永久免 ...

  7. java上传文件限制大小_Java Web:附件上传,两种文件上传限制格式及大小方法,学习笔记文件操作【诗书画唱】...

    附件上传: package com.jy.controller; import java.io.File; import java.io.FileOutputStream; import java.i ...

  8. 一百二十二、Git——Git上传代码两种方法,一是用IDEA,二是用小乌龟

    方式一.用IDEA (一)用IEDA   clone拉项目 File--New--Project from Version Control--Git 输入URL,选择Directory,点击clone ...

  9. 原生态的ajax如何上传文件,原生ajax和iframe框架实现图片文件上传的两种方式

    大家应该可以举出几种常用的异步文件上传功能的实现方式,使用频率较多的有原生ajax和iframe框架,实现图片文件上传,下面就为大家分享图片文件上传的两种方式:原生ajax和iframe框架,供大家参 ...

最新文章

  1. NIPS 2017录用论文先睹为快!论文作者清华专场分享(附PPT下载)
  2. 如何管理 vue 项目中的数据?
  3. HTML与CSS基础知识补遗(一)
  4. Matlab 训练深度学习模型函数 trainingOptions
  5. 动态系统开发方法DSDM
  6. 在实际项目中如何应用门面模式(Facade)
  7. 如何使用iOS AddressBook
  8. QML基础类型之geoshape
  9. ai电磁组属于什么组_RPA+AI 创新案例挑战赛 2020 【专业组】amp;【校园组】优胜名单来也!...
  10. 全国企业税收调查数据(2007-2016)共10年数据,均未脱敏。可通过纳税人识别号,识别具体企业名称和地区信息等,可匹配中国工业企业数据库,中国出口海关统计数据、中国企业污染排放数据库、中国海关数据
  11. dmx512 java_DMX512控制协议及其实现
  12. Java 文本内容差异对比实现介绍
  13. PMP练习199题答案解析版
  14. 计算机文档保存了在文件夹中找不到,word文档保存后找不到了如何解决
  15. IMU与Gyro及其它相关
  16. 怦然心动(Flipped)-4
  17. vue生命周期中的modle→view过程
  18. 谈谈自己关于阅读源码的一点鄙见
  19. WEB开发文档2 总结
  20. 以下代码可以屏蔽掉alt+f4

热门文章

  1. 华为linux如何操作系统,华为网络大赛-服务器操作系统基础原理-Linux篇(1)
  2. Toast UI Editor富文本编辑器
  3. 有赞数据仓库实践之路
  4. python类中函数互相调用记得带self
  5. 2022-4-18 Leetcode 413. 等差数列划分
  6. vscode注释模板
  7. 2022-4-12 Leetcode 452.用最少数量的箭引爆气球
  8. 时隔200多天后,“洞察号”火星探测器即将着陆火星表面
  9. ae使用isparta导出gif
  10. 什么叫做工作票?什么是工作票和操作票制度?