转自: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的使用介绍,敬请期待~

最新文章

  1. 使用TSQL查询和更新 JSON 数据
  2. Connect(); // 2015 简要整理
  3. 淘宝npm镜像
  4. 验证码的种类与实现 C#封装类 - .NET MVC WEBFORM
  5. 在navgationController中添加UISegmentedControl
  6. How to download apk for google play online?
  7. c语言输入输出
  8. [上传下载] C# ImageUpload图片上传类教程与源码下载 (转载)
  9. Xcode使用xib拖线时出现: could not insert new outlet connection
  10. win8下 web测试 之 hosts绑定
  11. LeetCode 217. Contains Duplicate (包含重复项)
  12. 查找git ignore的追踪
  13. C#递归拷贝文件删除文件
  14. mac 命令操作
  15. Git忽略提交规则 - .gitignore配置运维总结
  16. C++Primer第五版——习题答案详解(二)
  17. 【socket-python应用】控制泓格ET-7044通信模块输入DI输出DO
  18. jQuery之禁止Get请求缓存
  19. Python--多线程处理
  20. MAYA逼真手枪制作视频教程 中文字幕

热门文章

  1. 【BZOJ 1176】【Balkan 2007】Mokia
  2. 微信扫码支付 php
  3. windows2003开启vpn服务
  4. native2ascii 国际资源文件编码
  5. 纯JSP实现简单登录跳转
  6. Redis的发布订阅
  7. 策略设计模式与c语言中的函数指针
  8. 什么是ECMA标准
  9. Jenkins 2.x版本的节点配置选项更新
  10. hdu 5017 模拟退火