Selenium优化文件上传

Selenium的文件上传是有缺陷的,只能支持Input标签上传。这是Selenium的硬伤,但是我们想到了用AutoIT的方式解决了这个问题。但是autoIT使用起来太过于麻烦。

在这儿我们之前是先用autoIT识别元素,再编写脚本,再编译成exe执行文件,再用java代码去调用exe执行文件。这样的流程是不是显得很复杂呢?而且还要编写autoIT的脚本。

所以作者想能不能直接编写Java脚本代替原来的autoIT脚本呢?后来作者找到了autoIT的集成包。只要将AutoITX的包导入到项目中,然后配置一下环境。我们就直接可以使用了。

不过作为一个固定的文件上传代码,我们是需要将其封装起来的。为什么叫固定文件上传代码呢?你会用autoIT的元素识别工具去识别多个文件上传的元素的时候你会发现大部分的文件上传元素都是一致的。所以我把它叫做固定的文件上传代码。如果遇到不一致的怎么办呢?那么我们从新编写一个文件上传方法就可以了。

这样一来我们在“一致”的情况下就完全脱离了AutoIT这个工具了(界面上,实际上没有),我们就不需要编写AutoIT代码、也不用单独编译成exe执行文件,不用去调用了。这样一来是不是很轻松了呢?不过值得一提的是,由于没有良好的元素识别工具所以,元素识别的时候还是摆脱不了AutoIT。

首先先准备环境:

Selenium拉包:我们的Maven对包的覆盖还是比较全面的,所以我们的AutoITX的包可以在Maven中直接可以找到。拉包代码如下:

de.openkeyword

autoit

0.1.17

配置jacob环境:在拉完AutoITX的包后你会发现AutoITX包用的时候会报错,会提示缺少文件或配置,这个时候我们就需要将jacob的环境搭建起来,因为AutoITX对Jacob具有依赖的。在这里我们就不能去Maven拉包了。虽然说Maven中也有jacob包,但是版本太低,同时具有一个致命的缺陷就是它缺少一个dll的文件。没有这个dll文件我们AutoITX依然是跑不起来的。同时这个jacob的包需要去其他网站上获取(注意一定要获取有配套的dll文件的版本),在这里作者提供了一个比较新的一个版本jacob-1.18:

下载地址:https://pan.baidu.com/s/1rengNTex1656t-nvBMKxJw 网盘密码:9dpa 文件密码:1124

下载后我们会有几个文件,我们需要将其中的jacob-1.18-x**.dll文件根据我们系统放入到JDK的jdk1.8.0_161\jre\bin目录下。同时将其中的jacob.jar文件导入到项目的库内。

1、 在项目下新建一个library目录将jacob.jar文件拷贝到目录中去。

2、 再 右击Jre system library点击build path下的configure build path

3、 点击add jars选择之前copy到项目中的jacob.jar文件就好了

Java中的AutoITX代码

Java中的AutoITX代码从语法上来说是与AutoIT上的一致的,不过在编写之前需要先实例化一个AutoITX的对象,然后使用AutoITX中的方法

例如:

/*

* 调用autoItX包进行文件上传操作

*/

public void autoUploadMode(String filePath) {

try {

AutoItX auto=new AutoItX();

auto.winActivate("打开");

auto.ControlSetText("打开", null, "Edit1", filePath);

auto.sleep(1000);

auto.controlClick("打开", null, "Button1");

logger.info(filePath+"文件上传成功");

} catch (Exception e) {

// TODO: handle exception

logger.error(filePath+"文件上传异常"+e.getMessage());

takeScreenShot();

}

}

selenium autoit java_Selenium怎么优化AutoIT文件上传?相关推荐

  1. WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载

    MTOM消息优化传输机制主要应用于大量数据的传输,很多文章中也直接得出结论:使用MTOM文件传输效率高.为什么MTOM的数据传输效率会比别的方式要高?MTOM真的如此完美吗,它有什么不足?什么情况下使 ...

  2. 架构探险笔记10-框架优化之文件上传

    确定文件上传使用场景 通常情况下,我们可以通过一个form(表单)来上传文件,就以下面的"创建客户"为例来说明(对应的文件名是customer_create.jsp),需要提供一个 ...

  3. servlet实现文件上传,预览,下载和删除

    一.准备工作 1.1 文件上传插件:uploadify: 1.2 文件上传所需jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar 1.3 将数据转 ...

  4. jq上传file到php,jQuery文件上传

    插件描述:这是一个文件上传的展示,看很多插件,并不满意就自己写了一个,可能兼容性不是很好,没有准确进行测试过,还请各位不吝赐教 更新时间:2019/3/25 下午8:53:17 更新说明:修复上传成功 ...

  5. selenium autoit java_selenium+java利用AutoIT实现文件上传

    1.AutoIT介绍 AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘.鼠标.窗口等操作,实现自动化. 2.实现原理 利用AutoIT编写合适的脚本,然后将脚本编译成可执行文 ...

  6. selenium autoit java_Java+Selenium——AutoIt工具处理文件上传

    关于文件上传,这边介绍一个第三方工具,叫AutoIt,简单来说,这个是一个能支持桌面GUI自动化的工具,它支持脚本语言编写.这里,我们用AutoIt来做文件上传的演示.在Selenium脚本中如果需要 ...

  7. selenium+python自动化测试系列(二):AutoIt工具实现本地文件上传

    AutoIt使用简单说明 AutoIt的安装这里就不在啰嗦,可以参考AutoIt安装或者自行搜索解决. 第一步:定位上传文件路径的文本框 这里举例说明,如何定位?如图 这里我们看到上传文件的类型是bu ...

  8. python selenium 文件上传_python+selenium 文件上传

    前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种 ...

  9. python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

    很多selenium学习者被浏览器弹出的文件上传.下载框折磨的痛不欲生,今天博主就带你们轻松搞定上传和下载问题. 上传 上传弹框 文件上传是所有UI自动化测试都要面对的一个头疼问题,要处理这个问题,我 ...

最新文章

  1. Photoshop创造氛围照片合成视频教程含素材
  2. Windows 7 PE RAM 引导盘及WIM 镜像制作
  3. android drawerlayout 遮罩层白色,DrawerLayout放在Toolbar的下方导致NavigationView出现与状态栏等高的遮...
  4. C++泛型编程实现平衡二叉搜索树AVL
  5. linux在线扩展文件系统空间ext2online
  6. 我摸鱼写的Java片段意外称霸Stack Overflow十年、征服6000多GitHub开源项目: 有bug!...
  7. LAMP网站平台搭建
  8. Python redis 批量模糊删除keys
  9. 游戏设计的第一步:设计体验
  10. 高等数学上下册及习题解析(同济第七版)
  11. 非线性数学模型线性化
  12. 手机无法获取电脑热点ip地址
  13. 字母和数字符号的ASCII码对照表转
  14. 浅淡静态代码分析工具
  15. DCPP系列衍生物Cz-DCPP,Cz-Ph-DCPP,DPA-DCPP,DPA-Ph-DCPP,DMAC-DCPP,DMAC-Ph-DCPP
  16. matlab图上面加箭头,利用matlab如何在图形中绘制箭头
  17. kafka身份认证 maxwell_Kafka 使用SASL / SCRAM进行身份验证
  18. 【OpenCV 例程300篇】206. Photoshop 色阶调整算法
  19. vue中的方法 methods 定义时不要使用箭头函数
  20. MPC控制器设计,模型预测控制,线性时变模型预测控制,LTV MPC,提供理论讲解与应用实现

热门文章

  1. 我的PhoneGap安装配置经历
  2. 依据机械特性选取合适的电机系统
  3. 从零实现 RGB屏幕
  4. 小tips --atoi函数 atof函数
  5. 沉浸式iOS热更新方案
  6. 隐马尔科夫模型 Viterbi算法 Python实现
  7. JS--JavaScript数据类型(数值、字符串、布尔值)详解
  8. HTML5新特性之标签使用:header、nav、aside、main、footer......
  9. MTK平台GPIO的使用与调试
  10. ibm 服务器主板坏掉硬盘数据恢复,RAID损坏后 对数据的完整备份