利用selenium实现图片文件上传的两种方式介绍

YunMan YunMan     2022-09-04     151

关键词:

在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同。

一、直接利用Selenium实现

     这种方式是最简单的一种实现方式,但是依赖于开发的实现。

    当开发直接使用file类型的input实现图片文件的上传时,实例:<input type="file" name=‘‘filename">

    我们可以直接利用Selenium提供的方法实现文件上传,但是因为依赖开发的实现,而且目前实现基本都会利用框架,所以这种实现方式有很大的局限性。

  •   首先找到元素:WebElement  file = driver.findElement(By.name("filename"));
  •   给此元素设置值:file.sendKeys("E: estfile.jpg");

二、利用AutoIT工具实现

       目前,一般实现文件图片上传的方式都是有一个按钮,点击之后直接调用操作系统自身的弹框,选择文件后,实现上传。因为Selenium不支持调用操作系统的操作,所以这种情况下,利用Selenium无法完成图片上传,这时,我们可以选择借用其他工具实现。

1、AutoIT介绍

     AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘、鼠标、窗口等操作,实现自动化。

2、实现原理

     利用AutoIT编写合适的脚本,然后将脚本编译成可执行文件,在自动化实现时,直接调用此脚本实现文件上传。

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

3、自动化调用

  • AutoIT脚本编译成可执行文件后,放到本地的某一个目录下
  • 自动化实现过程中,需要上传图片时,首先定位到【上传】字样文本,点击此按钮
  • 执行编辑后的可执行文件,实现文件上传

  实例:

  假如,要上传图片的页面及html显示如下:

      技术分享

   利用AutoIT编写的脚本编译后的可执行文件的存放目录:E:upfile.exe

  自动化实现代码:

  技术分享

4、AutoIT安装

  • 下载并安装AutoIT,下载链接:https://www.autoitscript.com/site/autoit/
  • AutoIT安装成功后,可以在开始菜单下看到AutoIT的所有工具,如下图所示:
  •     技术分享 其中分为几类,AutoIT Window Info用来识别Windows控件,根据识别的控件信息编写脚本;Complie Script to .exe,用来将利用AutoIt编写的脚本,编译成可执行文件;Run Script 用来执行AutoIT的脚本信息;SciTE Script Editor用来编写AutoIt脚本。
  • 接下来就是利用以上四种工具,来编写AutoIT脚本,然后编译成可执行文件

5、利用AutoIT编写脚本

(1)  AutoIt Window Info 

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

      此工具打开的界面显示:技术分享

     用鼠标拖住工具上的Finder Tool的图标(即图中蓝色圈圈部分)到要识别的控件上,控件的唯一标识信息会显示在工具的左侧部分(图中红框标出的部分)。

    从显示的结果得知,此控件的Title=“打开”,Class为Button,Instance=1。我们就是利用控件的这些信息,定位控件,编写脚本。

(2) SciTE Script Editor

     根据以上所识别的空间信息,利用此编辑器,利用此软件根据AutoIT的语法编写脚本。

     附实现文件上传需要的几个方法:  

    ControlFocus ( "窗口标题", "窗口文本", 控件ID)   设置输入焦点到指定窗口的某个控件上

    WinWait ( "窗口标题" [, "窗口文本" [, 超时时间]] )  暂停脚本的执行直至指定窗口存在(出现)为止

    ControlSetText ( "窗口标题", "窗口文本", 控件ID, "新文本" )   修改指定控件的文本

    Sleep ( 延迟 )   使脚本暂停指定时间段

    ControlClick ( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]] )   向指定控件发送鼠标点击命令

    其中,title即AutoIt Window Info识别出的Title字段,controlID即AutoIt Window Info识别出的Class和Instance的拼接,如上图拼接后的结果应为:Button1

    实例:

        技术分享

    AutoIT脚本编写完成后,可以通过菜单栏“Tools”-->“Go” 运行一下脚本。注意,运行的时候,上传窗口需处于打开状态。

6、AutoIT脚本编译成可执行文件

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

     技术分享

    点击“Browse”选择保存的脚本文件,点击“Convert”将其生成exe文件。

    至此,利用AutoIT实现图片上传的流程结束。

selenium学习-6文件上传操作的两种方式(代码片段)

本文主要讲解,在selenium自动化中,实现文件上传的两种方式。本章节实验的HTML代码:<html><formaction="http://baidu.com"target=""id="uploadForm"enctype="multipart/form-data"></form>  <inputid="file"type="file"name="file"/>  <inputtype=... 查看详情

selenium上传文件方法总结

Web上本地上传图片,弹出的框Selenium是无法识别的,也就是说,selenium本身没有直接的方法去实现上传本地文件,这里总结了两种上传文件的方式。一、利用Robot类处理文件上传。其大致流程可以为:1、利用selenium点击web上本地文... 查看详情

文件服务器的两种实现方式(代码片段)

...有文件,示例界面如下:??本文将介绍笔者接触到的两种实现文件服务器的方法,它们所使用的工具如下:NginxPython本文以Linux系统(Ubuntu系统)为例,具体介绍如何实现文件服务器。Nginx实现文件服务器Nginx的简介与安装??Nginx是... 查看详情

前端图片上传的两种逻辑分析

...入服务器,返回文件对应id,用户提交表单时带上此id,实现表单与文件的关联。  用户选择图片后,前端使用FileReader()对象将其转换成base64地址,只在前端进行图片预览。表单提交时,将base64转换成file文件,先上传图片... 查看详情

关于h5页面中生成图片的两种方式!

...默认就有,那么对于生成图片的有哪些方式呢?方法一:利用canvas绘制图形,然后生成图片代码如下:  小结:这种方式较为繁琐,因为绘制canvas的过程本身过程较多,远远没有布局一个页面简单。方法二:利用html2canvas... 查看详情

selenium系列-针对两种上传文件方式的实现方案(代码片段)

如果你还想从头学起Selenium,可以看看这个系列的文章哦!https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈... 查看详情

利用css3实现鼠标悬停在图片上图片缓慢缩放的两种方法

1.改变background-size属性  将图片作为某个html元素的背景图片,用transition属性改变图片的大小。1.container{2background-size:100%100%;3transition:all2s;4}5.container:hover{6background-size:120%120%;7}这种方法有个问题是图片缩放的时候会出现抖动... 查看详情

javascript实现图片实时预览的两种方式

一、FileReader(base64):代码:<inputid="file"type="file"><imgid="img"><script>varfile=document.getElementById(‘file‘)varimg=document.getElementById(‘img‘)file.addEventListener(‘change‘,fun 查看详情

百度贴吧无限自动水贴的两种方式,使用requests(urllib2)和selenium两种方式回帖

本文介绍,回复贴吧指定某楼层主的帖子的方法。在这里不介绍无限发主贴和无限回复主贴的方法,无限发主题帖会爆吧,引起别人的反感,并且很容易遭到吧主的封杀;无限回主题帖,会让整个帖子的每楼的回复充满了自己的... 查看详情

android文件流的方式多张图片上传,并多个参数

...的方式:下面我们就说明一下以文件流上传图片的方式,实现网络框架是Retrofit测试上传3张手机sd卡中的图片,并传人了参数EquipmentCode,Description,ReportUserCode等其中的思路是:Post的方式,Content-Type:multipart/form-data的类型进行上传文... 查看详情

unity实现绘制线断一————利用linerenderer组件划线的两种方式

这几天,做项目的时候需要用到绘制线的功能,我之前做过划线的功能,总体来说就是三种方式,一种是LineRenderer组件,第二种是GL绘制线,第三种就是Vectrosity插件,他可以绘制各种各图形,1.首先来说一下LineRenderer组件划线的... 查看详情

文件上传有两种方式upload

...UEelementUI表单上传在项目开发需求中基于VUE+elementUI在表单实现多张图片和Excel文件上传的需求。1.图片上传模板2、常用方法介绍1、在实现自定义上传的:auto-upload设为"false"时before-upload将会无效,此时如要验证文件类型或者... 查看详情

selenium2之文件上传

我们在使用selenium做web自动化测试的时候也许会碰到需要上传文件或者图片的需求。那么下面给大家介绍一下,selenium是怎么实现文件上传和哪些情况不能直接上传。 一、上传控件标签为input请看以百度首页的文件上传为例:... 查看详情

给予ftp服务的两种登录方式

 ftp(简单文件传输协议),是一种应用广泛的网络文件传输协议和服务,占用20和21号端口,主要用于资源的上传和下载. 在linux对于ftp同widows一样具有很多的种类,这里主要介绍vsfptd的两种登录方法(本地登录和虚拟登录)极... 查看详情

selenium日期控件不能直接输入的两种处理方式

参考技术A下面已经12306为案例用js将readonly属性去掉删除,driver.execute_script("document.getElementById(\'date\').removeAttribute(\'readonly\')")。这样selenium就可以直接在文本框里输入日期 查看详情

js实现页面跳转的两种方式

CreateTime--2017年8月24日08:13:52Author:Marydonjs实现页面跳转的两种方式方式一:  window.location.href =url说明:我们常用来在js中实现页面跳转的方法,使用get方式发送请求,传参有限更多介绍,见文章:js操作当前窗口  方式二... 查看详情

python根据url读取网络图片的两种方式(opencv)(代码片段)

...;但如何直接根据URL操作网络图片呢?本文介绍其两种实现方式。方法调用VideoCapture进行转换imread()函数不能直接读取网络图片,但VideoCapture()可以。不过VideoCapture()是以视频的形式读取的,因此我们只需要取其第 查看详情

python根据url读取网络图片的两种方式(opencv)(代码片段)

...;但如何直接根据URL操作网络图片呢?本文介绍其两种实现方式。方法调用VideoCapture进行转换imread()函数不能直接读取网络图片,但VideoCapture()可以。不过VideoCapture()是以视频的形式读取的,因此我们只需要取其第 查看详情