转自:http://blog.csdn.net/tulituqi/article/details/21888059

Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过还是会有部分情况下会脱离Selenium2library的控制,无法进行操作。比如说下载文件的时候,要选择保存文件在什么地方,比如说上传文件的时候,要选择上传哪个文件,这些在Selenium2library下都没有很好的处理办法。但是结合上AutoItLibrary,就可以很好的来进行处理了。结合AutoItLibrary的内容分2篇,前一篇介绍AutoItLibrary安装使用和对话框处理,本篇介绍上传下载。

两篇的具体demo和testcase我都打包在一起了,请在这里下载,http://download.csdn.net/detail/tulituqi/7570453

下载解压缩后直接用ride打开里面的tests看代码或者运行案例即可。

1、测试上传

a、标准控件上传。

例如下面这种上传控件,如果是人工操作,用鼠标点击浏览来选择文件即可。

在Selenium2Library里面提供了处理这种控件的关键字,那就是choose file。

case脚本如下:

用这个关键字,就会直接把文件路径下载浏览前面的文本框里的。

我这里只是例子,正常应该另外会有个上传按钮去点击进行真正的上传(以下皆同)。

b、非标准控件上传。

例如下面这种只有一个按钮的,CSDN博客上传图片的选择文件按钮也是这种。

只能点击按钮在弹出的框里选择文件的,这时候就可以用上AutoItLibrary了。

由于我的demo页面这个按钮的例子是在网上找的,在具体实现点击按钮的时候发现怎么都没法弹出来选择文件框,无奈之下用上了我的笨法子来实现点击按钮,代码比较多,不过有效果。

PS:这个方法对于那种flash按钮的点击也可能有效。

说一下点击按钮的思路:

1)先通过Selenium2Library获取对象的坐标

2)再通过AutoItLibrary获取IE页面的坐标

3)再通过AutoItLibrary获取IE窗口的真实坐标

4)通过计算得到要点击按钮的真实坐标

5)通过AutoItLibrary点击指定坐标的鼠标左键

上述思路的脚本就是从第3行到第16行,如下图

弹出了选择加载文件的框之后,就可以具体操作了,也就是17行到21行的处理。前一篇不会处理文本框的可以看看这里第19行的写法。

2、测试下载

点击页面的下载测试,会弹出这样的文件下载提示框,想必大家也经常遇到(下图)。我们先看看手工操作是怎么做的。

a、点击页面下载测试链接,弹出下面的页面点击保存

b、点击保存后弹出另存为的框,可以自己选择目录,或者在文件名那里输入路径来保存。

因为我做的是一个固定了路径的,每次下载都是到demo目录下的同名文件,因此会出现存在同名文件的确认。

如果不想出现这个,就要想办法在保存文件的命名上使得文件名每次都不同,否则就要考虑这种流程的处理。

c、保存同名文件的确认另存为处理

好了下面就是具体实现的案例脚本了。

其中a的脚本是第3行到第7行,b的脚本是第9行到第12行,c的脚本是第14行到第16行。

中间加了很多sleep的等待,实在是AutoItLibrary脚本执行速度太快,为了保证demo的成功率,我临时加上了,大家可以试试其他方案不用sleep的,作为本篇的练习吧。

好了,这两篇介绍Selenium2Library结合AutoItLibrary的文章就写完了,AutoItLibrary里还有很多其他的关键字,大家可以自己根据需要去使用,我就不具体一一介绍了。

本身AutoItLibrary是可以作为C/S架构的程序自动化测试来使用的,官方的计算器的例子就是这样的。只不过他只适用于标准win32的控件,非标准win32的控件基本上不适合用AutoItLibrary了。如何知道是否标准win32控件,就用Au3Info.exe去识别一下对象,只要control下面的class出现是正常的英文名都可以来识别,比如Edit/Button之类。

上次写了文章之后过了好久才写新的内容,让大家久等了,以后尽量保证能快速推出新的内容介绍。

下一篇预告,大概会是DatabaseLibrary的使用介绍,敬请期待~

Robot Framework--13 RFS+AutoItLibrary测试web上传下载的更多相关文章

  1. Robot Framework--12 RFS+AutoItLibrary测试web对话框

    转自:http://blog.csdn.net/tulituqi/article/details/21871247 Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过 ...

  2. RFS+AutoItLibrary测试Web对话框

    Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过还是会有部分情况下会脱离Selenium2library的控制,无法进行操作.比如说下载文件的时候,要选择保存文件在 ...

  3. web上传下载文件

    WebService代码: ///     /// 上传文件     ///     /// 文件的byte[]     /// 上传文件的路径     /// 上传文件名字     ///     ...

  4. java web上传下载乱码问题解决方法

    文件下载中文乱码,因为http请求url和header要求只能通过ascii码,对于其他字符则不行,需要转码.而不同浏览器的处理方式右不一样. 解决方法一: /** * 乱码解决 * @throws ...

  5. SNF开发平台WinForm之六-上传下载组件使用-SNF快速开发平台3.3-Spring.Net.Framework

    6.1运行效果: 6.2开发实现: 1.先在要使用的项目进行引用,SNF.WinForm.Attachments.dll文件. 2.在工具箱内新建选项卡->选择项,浏览找到文件SNF.WinFo ...

  6. Web上传文件的原理及实现

    现在有很多Web程序都有上传功能,实现上传功能的组件或框架也很多,如基于java的Commons FileUpload.还有Struts1.x和Struts2中带的上传文件功能(实际上,Struts2 ...

  7. java web service 上传下载文件

    1.新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress package com; import java.io.FileInputStream; imp ...

  8. 前端之web上传文件的方式

    前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传 ...

  9. JAVA Web 之 struts2文件上传下载演示(二)(转)

    JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...

随机推荐

  1. oracle修改表字段

    --添加字段 )); -- 修改字段的长度- ));

  2. 【BZOJ 4104】【Thu Summer Camp 2015】解密运算

    http://www.lydsy.com/JudgeOnline/problem.php?id=4104 网上题解满天飞,我也懒得写了 #include<cstdio> #include& ...

  3. asp.net(C#)时间相减 得到天数、小时、分钟、秒差

    asp.net(C#)时间相减 得到天数.小时.分钟.秒差 DateTime dtone = Convert.ToDateTime("2007-1-1 05:00:00"); Da ...

  4. iis Server Error in '/' Application

    1.开始-运行-cmd-输入cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-回车-aspnet_regiis.exe -i 回车 2.如果不是检查链接 ...

  5. python3 报错集合

    1.格式 message = "GET / HTTP/1.1\r\n\r\n" s.sendall(message) TypeError: 'str' does not suppo ...

  6. 【BZOJ-3156】防御准备 DP + 斜率优化

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 951  Solved: 446[Submit][Status][Discuss] ...

  7. 【poj2741】 Colored Cubes

    http://poj.org/problem?id=2741 (题目链接) 题意 给出n个骰子,每一面都有一种颜色,问最少更改多少个面的颜色可以使所有骰子通过旋转后完全相同. solution 迷之d ...

  8. 【bzoj1407】 Noi2002—Savage

    http://www.lydsy.com/JudgeOnline/problem.php?id=1407 (题目链接) 题意 有n个原始人他们一开始分别住在第c[i]个山洞中,每过一年他们都会迁往第( ...

  9. bzoj4419[SHOI2013]发微博

    题意:给你一个初始没有边,点权均为0的无向图,三种操作:加边,删边,选择一个点将当前与之相邻的点(不包括自身)的点权+1,询问最后所有点的点权. 据说正解是set维护每个人的朋友,然后考虑每次加边.删 ...

  10. Android登录界面实现

    花了一些时间实现了一个还算可以等登陆界面,主要是对这两天工作的一个总结:自定义按钮.编辑框.布局.全屏等. 效果如下: 获取代码:点这里