前言 

最近在学习watir,一方面是老大布置给我的任务,另一方面我也对自动化测试很感兴趣,作为实习生能有这样的学习机会还是要好好把握的。

这次的研究,是针对我们项目组快上线的项目,一个B/S系统。主要用C#.NET开发,所以ruby和watir的安装环境都在windows。虽然watir是跨平台的,但在配置环境的时候还是遇到了麻烦,可能由于公司的网络限制,造成了gem无法在线安装,只能本地安装。另外,作为新手的我使用Emacs还不太上手,所以目前需要一个IDE帮助我学习,老大给了我一个支持ruby的绿色版NetBeans,研究正式开始。

环境说明

操作系统:windows XP

ruby:1.8.7

Watir:1.6.5

浏览器:IE8

关键问题

watir的一些基本操作在这不一一详解,我参考了watir对web的操作。在这总结一下研究过程中遇到的棘手问题。

(1)文本框输入中文

在网上找了很多种方法,也试了很久,以下的方法我本人也验证过,可以正常地输入中文。

第一步:NetBeans->项目->属性->编码->将UTF8改为GB2312

第二步:win32ole.rb文件->将“WIN32OLE.codepage=WIN32OLE::CP_UTF8”改为“WIN32OLE.codepage=WIN32OLE::CP_ACP”

(2)定位frame

根据wiki.openqa.org的说法,在irb中利用ie.show_frames可以获得该页的frame数量和对应名称,但是我试了之后,仅能得到frame的数量,不知道是版本问题还是缺少安装了gem。

目前,我只能利用IE8中的开发人员工具找到所有的frame的名称,再用ie.frame(:name,"frame")进行定位。

(3)识别PageTabList的<li>标签

此类标签我是利用XPath来进行识别的,具体地如下图所示的html代码:

 

目前,我们可以采用两种方法,

a)ie.link(:xpath,"//li[3]").click

b)ie.element_by_xpath("li[contains(@id,'POType_200334')]/").click

疑难问题

(1)js中的showDialog和showModalDialog如何定位

例如上图所示的弹出框目前我没有找到办法定位,已经尝试过利用正则表达式匹配或是修改modal_dialog.rb文件等方法。

(2)td中的元素无法用xpath定位

若td中的元素无id、name可以帮助定位,目前没有找到合适的方法。

参考资料

 

[1] watir的本地安装过程

[2] watir对web的操作