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

article/2025/9/18 12:08:00

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程序并执行。
了解了上传的实现过程,那么下载也是一样的。

 


http://chatgpt.dhexx.cn/article/8ZfCBMBs.shtml

相关文章

使用appfox工具测试登录有图片验证码接口的问题

环境简介 服务器环境&#xff08;运行在虚拟机之上&#xff09;&#xff1a; 环境环境名称操作系统Win10 1905 专业版数据库sqlserver 2008R2 本机环境&#xff1a; 环境环境名称操作系统win10 1905 专业版产品某GRP高校财政管理软件中间件软件集成tomcat运行环境软件集成J…

性能服务器图片介绍大图,服务端图片图片上传接口性能压测总结

服务端图片上传接口性能压测总结 一。性能测试时需要关注点 用户操作的相应时间 服务器资源使用情况是否合理 应用服务器和数据库资源使用是否合理 系统能否实现扩展 系统最多支持多少用户访问、系统最大业务处理量是多少 系统性能可能存在的瓶颈在哪里 更换那些设备可以提高性…

生成9mb、10mb、20mb、30mb的星云图片,常用于图片测试

前言 在开发中经常会遇到图片上传问题 测试5mb、10mb、20mb等的图片上传时间 测试对10mb以上的图片限制上传 但是这么大的图片也不好找或者是我们想要一个50mb左右的图片&#xff0c;怎么可以快速简单的做出来&#xff1f;&#xff1f; 那你就来对地方了&#xff01;&…

postman测试上传图片接口步骤教程

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件&#xff0c;前端也要学会使用&#xff0c;只有这样&#xff0c;当接口调试不通的时候&#xff0c;用测试工具&#xff0c;才能够更有底气的甩一张截图给你家的后端&#xff0c;瞧&#xff0c;这是你写的bug。 下…

【软件测试】测试的分类 图片梳理 多图预警

按照开发阶段来分&#xff08;对应软件测试V模型更好理解&#xff09; 1. 单元测试&#xff1a;针对程序内部的最小模块进行测试 测试阶段&#xff1a;编码后或编码前&#xff08;TDD Test-Driven-Development 测试驱动开发&#xff0c;编码前测试就是写一个测试脚本&#xff…

Jmeter压力测试图片上传

最近在写http图片上传,需要进行压力测试一番; 这里我就分享一下测试教程: 先下载安装jmeter http://jmeter.apache.org/download_jmeter.cgi 安装完成打开jmeter 添加线程组: 添加HTTP请求测试: 添加监听器: 编写HTTP请求填写: 选择图片路径: 对于图形结果的解释: 样本数目…

制作LCD 的测试图片RGB666格式

缘起 由于工作原因&#xff0c;小弟需要调试和测试AM335x上的AT070TN83这块7寸的显示屏。查datasheet发现他的格式为RGB666,所以想着制作一张RGB666的BMP格式的图片&#xff0c;结果发现BMP常见为RGB888和RGB565,没有RGB666这种格式的BMP图片. 之前用的测试方法是&#xff1a;…

YOLOv3批量测试图片并保存在自定义文件夹下

YOLOv3的网络训练教程在网上都能找到&#xff0c;最重要是依赖于官网github上的issues解决&#xff0c;如果有些问题不清楚可以百度搜索到&#xff0c;这篇文章主要是针对于训练好自己的网络后的测试命令以及实现批量测试图片并保存的操作&#xff1a; 先说测试并返回评价指标的…

使用mmdetection测试图片

本人刚入门目标检测&#xff0c;发现了一个开源的工具箱mmdetection&#xff0c;便自己使用里面的模型试着测试一张图片&#xff0c;网上大多数博客写的还是不够详细&#xff0c;所以想自己写一篇&#xff0c;方便大家及自己今后可以回顾。 首先&#xff0c;mmdetection的安装…

用于测试图片类型限制、图片大小限制的文件

文章目录 1、图片类型2、文件大小测试3、相关文件打包下载 相信大家测试的时候常常会遇到如下 上传图片等功能 那么遇到此类功能该如何进行测试呢&#xff1f; 这边首先需要提取这些功能的测试点&#xff1a; 该功能全面的测试点提取已经有大佬弄出来了&#xff0c;这边我就…

8080端口被占用处理方法

查看被占用的端口号&#xff1a; netstat -ano | findstr 8080杀死占用的端口号 taskkill /pid 14188 /f

怎么查看8080端口被占用详细教程

开始---->运行---->cmd&#xff0c;或者是windowR组合键&#xff0c;调出命令窗口 输入命令&#xff1a;netstat -ano&#xff0c;列出所有端口的情况。查找8080端口 打开任务管理器&#xff1a;Ctrt Alt . 或 CtrlShiftEsc 看找 PID &#xff1a; 4764 5. 右键&…

解决tomcat的8080端口被占用

解决tomcat的8080端口被占用 1.win R,输入cmd回车进入dos界面 2.输入netstat -ano|findstr 8080 查看占用8080端口的进程 3.输入taskkill /pid 84980 /f 将显示的进程号&#xff08;我的是84980&#xff09;结束掉 &#xff0c;注意结束这一个就可以了 4.重启tomcat cmd进…

Windows 环境下8080端口被占用,如何查看占用的进程及关闭进程

前言&#xff1a; 最近在写一个vue项目的时候&#xff0c;需要用到本地的8080端口来模拟数据获取&#xff0c;却发现8080端口被占用&#xff0c;莫名奇怪。 坑老是那么多&#xff0c;如何解决&#xff1f; win r 打开程序运行的快速窗口&#xff0c;输入cmd, 进入命令行窗口&…

Windows 关闭8080端口(8080端口被占用)

这个方法两条命令&#xff0c;简单有效&#xff01; 打开用管理员身份打开命令提示符 输入命令 1、C:\WINDOWS\system32> netstat -o -n -a | findstr :8080 TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 22260 2、C:\WINDOWS\system32> taskkill /F /PID 22260 成功: 已终…

Tomcat默认8080端口被占用了?看我暴力解决

文章目录 前言一、解决思路二、解决步骤1、打开cmd管理员窗口2、输入命令查看端口号和进程号3、通过任务管理器关闭进程 总结 前言 在使用idea开发Java Web的过程中&#xff0c;部署Tomcat之后经常会遇到8080端口被占用的情况&#xff0c;之前在网上搜索了很多解决办法&#x…

80端口或8080端口被占用的解决办法

80端口、8080端口被占用的解决办法 80端口或8080端口&#xff0c;一般Tomcat、JBoss、Oracle默认都会使用这个端口&#xff01; 所以就需要修改默认端口&#xff0c;让他们能一起协同工作。 《其实SQL2008、SQL2008R2中的“SQL Server Reporting Services (SQL2008)、SQL Ser…