试用watir——由喜忧参半到柳暗花明-创新互联

我在前面说过基于录制、回放的web测试麻烦多多,经常是带来的好处不如麻烦多。所以另寻他途。经过一番调研,觉得webdriver(也即selenium 2.0)前途较好,准备试用。webdriver支持多种语言,我们的项目是基于java编写的,按说用java能够更好的和项目集成。但考虑到刚开始用,快速上手很有必要,使用环境越轻量级越好。于是采用watir——Web Application Test In Ruby。我对ruby的了解仅限于听说过这个名称,好在网上有不少教程,而且快速展开测试也并不需要多深入的学习语言本身。使用ruby还有个好处就是它是一种解释性语言,可以即时调试。

创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为马鞍山企业提供专业的成都做网站、网站制作,马鞍山网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。

安装没什么难度(其实比网上的一些例子更容易,因为版本高了,很多工作不用准备了)

1.安装ruby,最新2.1,我装的是2.0。一路next完成。(devkit貌似不装也可以)

2.gem update --system (不升级也可以,自带的版本也够)

3.gem install watir 以及gem install watir-webdriver (可以用gem list看一下,如果已经包括了,这步也省了)

4.如果需要用ie和chrome测试,那么下载这两个的驱动:地址是,ie的:http://code.google.com/p/selenium/downloads/list chrome的:http://chromedriver.storage.googleapis.com/index.html

(关于chrome驱动得多说两句——因为这个问题费了我十几个小时的脑力。这个地址是我排查错误时找到的。网上大部分说法是在这里下http://code.google.com/p/chromedriver/downloads/list。但是这里搜到的最高版本才2.3,当chrome版本超过30,就不适用了。所以我用chrome测试失败之后,尝试很久才发现是驱动版本问题。驱动版本并非越高越好,要在上面我给出的地址里找到和chrome版本对应的驱动才行)

下面说说我在简单试用中发现的问题和最后的解决办法。

1.chrome驱动算一个,不重复了。

2.大多时候我们快速开始于一些简单的例子。比如测试百度、google。因为这两个页面看上去似乎非常简单,一个文本输入框,一个检索按钮。然而,打开百度、google首页的源代码,我们发现,这些页面内容远比展现出来的复杂的多,页面元素一层一层嵌套,想找个id和name都不容易。所以开始给我造成一些迷惑以至于让我对webdriver颇为忧虑。

  举个例子,我用一段脚本在ie里执行没问题,换到firefox就不行。让我对使用watir进行浏览器兼容性测试没了信心。如果换浏览器还要重新调试脚本的话,那么跟手工做没太大区别了。后来经过仔细调试,发现是因为——ie驱动的容错性更好导致的差别。具体来说,是页面中有元素的name属性重名,在ie里就正确识别出来了,而在firefox就报错了。都改用id属性就可以了,这样脚本就通用了。

3.然而更诡异的事情继续发生。一段脚本前一天执行还没问题,后一天就不行了。或者换台机器就不行了。这又是咋回事呢?经过排查,发现在百度和google首页中元素的id、name是变化的——我现在还没仔细验证是根据访问ip变化的还是根据访问时段变化的。简直是坑爹啊。好在测试自己的项目时不会发生这样的事。所以网上大部分教程用百度、google首页做例子并不适合,很容易调不通让新手一头雾水。

  这样一来,也给我们自己开发时提了个醒,页面元素的id和name尽量唯一且固定。找到原因之后,我对watir有些信心了,在项目中准备正式用了。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:试用watir——由喜忧参半到柳暗花明-创新互联
分享路径:http://myzitong.com/article/dccpje.html