当前位置: 首页 > news >正文

(转) RFS+AutoItLibrary测试web对话框

原文地址:http://blog.csdn.net/tulituqi/article/details/21871247

 

 

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

两篇的具体demo和testcase我都打包在一起了,请在这里下载,http://download.csdn.net/detail/tulituqi/7570453(新链接,以前的失效了)

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

 

1、AutoItLibrary安装

简单说下安装,把下面2个下载了,先安装pywin32,然后再安装AutoItLibrary,解压缩进入相应目录执行Pythonsetup.py install

 

pywin32-217.win32-py2.7.exe(我之前下载的217,最新的好像是218,版本较多,请注意py版本http://sourceforge.net/projects/pywin32/files/pywin32/)

AutoItLibrary-1.1.tar.gz(必须先安装上面的pywin32,并且Python的安装目录不能有空格,如果有空格会导致注册autoit的dll时出错。版本一直是1.1,下载路径:http://code.google.com/p/robotframework-autoitlibrary/)

64位的机器:除了安装上面2个之外,还不得不再安装一个AutoItV3(截止发文时最新的官网下载地址:http://www.autoitscript.com/site/autoit-news/autoit-v3-3-10-0-released/ ,如果以后有更新请从官网首页自行下载)。一般情况下装完这个就能用了。

 

2、AutoItLibrary对象识别

当成功安装AutoItLibrary之后,在你的硬盘某个盘根目录会多一个Robotframework的目录,具体哪个盘取决于你的User目录在哪个盘,例如我的是在D盘,因此多出来的这个目录就在如下路径:

D:\RobotFramework\Extensions\AutoItLibrary

这里是一些辅助工具,比如AutoItX.chm是帮助文档,AutoItLibrary.html是测试库的关键字文档说明,Au3Info.exe是最重要的识别对象的工具了。

在Finder Tool的位置有个十字星,可以用鼠标拖动他到你需要识别的对象上,就像下图这样:

AutoItLibrary的对象操作大体上有几大主要部分,Window操作、Control操作、Mouse操作、Process操作、Run操作、Reg操作还有一些其他的操作。

其中前三个操作我比较常用,Window和Control应该比较好理解吧,你看到的窗口就是Window,窗口上的按钮、文本框等就是Control。所以在通常要去操作Control时,一般需要先激活窗口,再操作控件。

AutoItLibrary的鼠标操作要用到真实坐标,这和Selenium2Library里的坐标略有差异,下篇会有例子。

回到上图,可以看到最重要识别出来的属性,分两块,在左侧上半部分,Basic Window Info和Basic Control Info。

经过我多次的使用,Window方面识别用Title比较多,Control主要用controlID,controlID就是在Basic Control Info里的Class+Instance,比如说图中这个对象,他的controlID就是Edit1,关键字里的strControl就是controlID(chm里都是写的controlID)。

AutoItLibrary的关键字我就不一一介绍了,大家可以看Chm帮助或者html的关键字文档,不过chm是原生AutoIt的文档,对于理解关键字的作用比较有帮助。关键字文档只是列出来所有的关键字和参数,基本很少有说明。

 

3、web对话框

a、你肯定见过这种对话框,前一个是只有确定的,还有确定取消2个按钮的。

b、你应该也见过这种对话框

c、还有那种在网页上弹出的要输入用户密码的登录框,我这里没有找到例子,也木有截图。(找到截图,见最底下)

以上这些都可以用AutoItLibrary来处理。

对于a来说,Selenium2Library中的confirm action就可以处理了。

对于b、c来说,都要用AutoItLibrary处理更好一些,因为那些文本框的输入已经脱离了Selenium2Library的控制了。

 

先来看a这种对话框在Selenium2Library的处理,脚本如下:

其中最主要用到的就是confirm action,顺便普及下相关的关键字

Choose Cancel On Next Confirmation

Choose Ok On Next Confirmation

这2个关键字其实特别针对的是a里第二个那种,从字面意思可以理解,选择OK或者Cancel在下一次Confirmation,请注意是下一次Confirmation,也就是你必须还要使用Confirmation才行,而不是用了这个就等于选择OK或者Cancel了,具体可看脚本里的使用。

 

再看看AutoItLibrary里的处理,脚本如下:

我做了个关闭对话框的关键字,方便重复调用。这个关键字实现的功能我基本上参考了confirmation,除了点击按钮,还会把提示信息返回,不过我没做choose cancel的部分。具体关键字的脚本如下:

 

 

我的demo页面上面表格里有3个按钮,付款、确认、输入。付款和确认就是a那种类型的,输入是b那种类型的。

我的脚本只做了a类型的处理,其他类型的请大家当作练习做吧。

如果其他类型的不会做,可以参考下一篇的内容吧。

 

找到c类型的截图了,IE里弹出这种窗口的时候,也可以用AutoItLibrary处理,有类似情况的可以自己练习下。

转载于:https://www.cnblogs.com/rf-bear/p/5550353.html

相关文章:

  • 刚刚接触python的感想
  • linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能
  • 第70届(2019)IMO中国国家队选拔考试试题
  • xml编码格式在tomcat下运行出错,eclipse里面直接运行没有问题
  • 微服务架构 SpringCloud(二)Eureka(服务注册和服务发现基础篇)
  • Android图片缓存之Glide进阶
  • css(二):高度与文档流,line-box与box,宽度,position与
  • SQL Server2005作业执行失败的解决办法
  • 进度条14
  • 阿里云RDS PostgreSQL GPU加速规格(支持GIS时空加速)发布
  • 怎么隐藏MathType标尺
  • 用Python监听邻居家小姐姐的上网行为
  • Git同步原始仓库到Fork仓库中
  • 如何将PDF图片旋转90度,盘点这个小方法
  • php 0613框架基础
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【React系列】如何构建React应用程序
  • 【知识碎片】第三方登录弹窗效果
  • angular2 简述
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Vue2 SSR 的优化之旅
  • webgl (原生)基础入门指南【一】
  • XForms - 更强大的Form
  • 双管齐下,VMware的容器新战略
  • 小程序开发之路(一)
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 第二十章:异步和文件I/O.(二十三)
  • $().each和$.each的区别
  • (+4)2.2UML建模图
  • (14)Hive调优——合并小文件
  • (bean配置类的注解开发)学习Spring的第十三天
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (rabbitmq的高级特性)消息可靠性
  • (二)WCF的Binding模型
  • (七)理解angular中的module和injector,即依赖注入
  • (四) Graphivz 颜色选择
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • .net 按比例显示图片的缩略图
  • .Net面试题4
  • ??myeclipse+tomcat
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @SentinelResource详解
  • [Apio2012]dispatching 左偏树
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [c]统计数字
  • [C++]——带你学习类和对象
  • [CISCN 2019华东南]Web11
  • [jQuery]10 Things I Learned from the jQuery Source
  • [leetcode] Multiply Strings
  • [Luogu 3958] NOIP2017 D2T1 奶酪
  • [nowCoder] 两个不等长数组求第K大数
  • [Paper]Cardiologist-Level Arrhythmia Detection with Convolutional Neural Networks
  • [python开发模拟netcat工具] BHPnet
  • [RK3568 Android11] Input UI 使用流程