Selenium怎么优化AutoIT文件上传?

Selenium优化文件上传

Selenium的文件上传是有缺陷的,只能支持Input标签上传。这是Selenium的硬伤,但是我们想到了用AutoIT的方式解决了这个问题。但是autoIT使用起来太过于麻烦。
在这儿我们之前是先用autoIT识别元素,再编写脚本,再编译成exe执行文件,再用java代码去调用exe执行文件。这样的流程是不是显得很复杂呢?而且还要编写autoIT的脚本。
所以作者想能不能直接编写Java脚本代替原来的autoIT脚本呢?后来作者找到了autoIT的集成包。只要将AutoITX的包导入到项目中,然后配置一下环境。我们就直接可以使用了。
不过作为一个固定的文件上传代码,我们是需要将其封装起来的。为什么叫固定文件上传代码呢?你会用autoIT的元素识别工具去识别多个文件上传的元素的时候你会发现大部分的文件上传元素都是一致的。所以我把它叫做固定的文件上传代码。如果遇到不一致的怎么办呢?那么我们从新编写一个文件上传方法就可以了。
这样一来我们在“一致”的情况下就完全脱离了AutoIT这个工具了(界面上,实际上没有),我们就不需要编写AutoIT代码、也不用单独编译成exe执行文件,不用去调用了。这样一来是不是很轻松了呢?不过值得一提的是,由于没有良好的元素识别工具所以,元素识别的时候还是摆脱不了AutoIT。

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

    <dependency>
        <groupId>de.openkeyword</groupId>
        <artifactId>autoit</artifactId>
        <version>0.1.17</version>
    </dependency>

配置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();
        }
    }

原文地址:http://blog.51cto.com/13740529/2120376

时间: 2024-05-16 00:06:15

Selenium怎么优化AutoIT文件上传?的相关文章

selenium+python自动化77-autoit文件上传【转载】

前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工具处理windows的控件窗口是专业的,所以这个需借助AutoIt来解决了. 一.环境准备 1.可以autoit官网上下载,安装 http://www.autoitscript.com/site/ 2.下载到本地后傻瓜式安装,安装完之后在应用程序找到这个Autoit v3 3.AutoIt里面几个菜

selenium+python自动化77-autoit文件上传

前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工具处理windows的控件窗口是专业的,所以这个需借助AutoIt来解决了. 一.环境准备 1.可以autoit官网上下载,安装 http://www.autoitscript.com/site/ 2.下载到本地后傻瓜式安装,安装完之后在应用程序找到这个Autoit v3 3.AutoIt里面几个菜

Selenium第16课 文件上传下载

一.PyKeyboard方法 from pykeyboard import PyKeyboard from pymouse import PyMouse k = PyKeyboard() # k.press_key(k.enter_key) # k.release_key(k.enter_key) k.tap_key(k.enter_key)  # 下载文件时点击enter键 二.浏览器配置 浏览器设置下载时不弹窗:about:config --> browser.download.folder

自动化测试——Selenium借助pywinauto实现文件上传(下载)

在利用Selenium进行Web自动化测试,遇到如下的Windows窗口进行上传.下载操作时,可以通过pywinauto进行操作.上传窗口如下: 使用pywinauto,需知Windows窗口控件的class,方可对其进行操作,通过Microsoft Spy++,即可获取控件的class,如下图: 示例代码如下: from pywinauto import application...    # 使用pywinauto进行上传操作    app = application.Application

selenium2之文件上传

我们在使用selenium做web自动化测试的时候也许会碰到需要上传文件或者图片的需求.那么下面给大家介绍一下,selenium是怎么实现文件上传和哪些情况不能直接上传. 一.上传控件标签为input 请看以百度首页的文件上传为例: 点击小相机后弹出文件上传窗口 我们通过源码可以看出,这个"本地上传图片"的控件标签是input 这时候我们可以直接使用seleniumAPI进行文件上传,代码实现如下: #coding=utf-8 from selenium import webdrive

selenium实现文件上传方法汇总(AutoIt、win32GUI、sengkeys)---基于python

在使用selenium进行UI自动化测试时,经常会遇到一个关于本地文件上传的问题,解决此问题一般分两种情况: 1. 元素标签为input 2.非input型上传 下面我们分别对着两种情况进行实例分析 (一)元素标签为input 此种情况处理比较简单,标签为input的上传,可以直接通过send_keys("本地文件路径")实现 举例:(以百度网盘为例) 1 # coding:utf-8 2 from selenium import webdriver 3 from time impor

Java+Selenium——AutoIt工具处理文件上传

参考:https://blog.csdn.net/u011541946/article/details/74359517 参考:https://blog.csdn.net/linxi9322/article/details/78789452 关于文件上传,这边介绍一个第三方工具,叫AutoIt,简单来说,这个是一个能支持桌面GUI自动化的工具,它支持脚本语言编写.这里,我们用AutoIt来做文件上传的演示.在Selenium脚本中如果需要AutoIt来协助这个文件上传功能,大概步骤是这样的: 1

python+selenium+autoit实现文件上传

问题 在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下 解决方案 第一种:type=file的上传文件,类似如下的 使用类似这样的代码就可以完成: driver.find_element('name','file').send_keys('./小强测试品牌.png') 第二种:就是第一种除外的,实现起来较为麻烦,这里用到了autoit,大致步骤如下: 1.下载并安装autoit,之后在开始菜单可以看到如下 AutoIt Windows Info 用于识别Windo

selenium+java利用AutoIT实现文件上传

1.AutoIT介绍 AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘.鼠标.窗口等操作,实现自动化. 2.实现原理 利用AutoIT编写合适的脚本,然后将脚本编译成可执行文件,在自动化实现时,直接调用此脚本实现文件上传. 备注:编写脚本和编译,需要借助AutoIT提供的工具,但是脚本编译成可执行文件后,可以直接使用,不再需要安装AutoIT. 3.自动化调用 AutoIT脚本编译成可执行文件后,放到本地的某一个目录下 自动化实现过程中,需要上传图片时,首先定位到[上传