开源自动化测试工具selenium的使用


一       Selenium概述:

Selenium是现在使用最为广泛的一款开源自动化测试工具,也是非商业支持的稳定性易用性最好的一款自动化测试工具。和由HP提供强大商业支持的QTP相比,selenium不仅在软件投资上有比较大的优势,在针对web测试的稳定性上也有绝对的优势。以下介绍的内容会通过和QTP在各方面的比较中进行,并针对简单的测试样例,对基本的使用进行简单说明。

 

二       Selenium的组成:

和QTP等其他工具类似,selenium也有几个组件组成,同时在使用的时候还需要一些开发的IDE平台进行支持。

对于初步的简单使用,需要先掌握seleniumIDE,RC的基本使用,以及对象识别方式Xpathe的基本知识。

1)        seleniumIDE:

selenium和QTP类似,同样需要先进行一定的脚本录制工作,而它默认支持的录制浏览器是firefox,IDE就充当了一个脚本记录的工作,它的表现形式为firefox的一款插件。



它可以记录准备过程中,用户在firefox上的制定网址下所做的一切操作,并转化为自己需要的一种开发语言,包括:java、perl、PHP、C#、Ruby等等。

 

2)        RC:

RC是selenium的特色组件,它通过从底层向不同的浏览器发出动作指令,达到用脚本控制web的效果,和QTP的activeX驱动的模式有着本质的不同,只要浏览器的动作指令原理不发生本质性的变化,就可以利用selenium达到自动化测试的效果,不会由于出现新的浏览器,还要等待HP重新开发相应的activeX控件。

 


其他:

由于selenium的非商业支持,所以很多类似于QTP中的组件都使用了firefox插件的办法得到了补充。

Firebug:帮助用户对页面上的对象进行识别,它可以准确捕捉到任何一个可见元素和不可见元素,同时支持由对象找代码和由代码找对象的使用方法,非常类似于QTP的spy和控件高亮显示功能。

Xpather:帮助用户利用xpath标记对象的位置信息,根据xpath的实现方式,可以将页面上的每一个控件元素做唯一性标识,非常类似于QTP的对象库,区别在于Xpath只记录元素的位置样式属性,不会记录截图。

 

三       Selenium的简单使用:

1)        测试的准备工作:

这里所说的准备工作,只一个自动化测试的准备,预计基本的测试用例等内容已经准备完成。

假如被测系统为ADCPX:

首先:用firefox打开被测系统的首页,启动IDE插件。



需要注意的是,IDE的baseUrl一定是当前要测试的web首页,默认生成的第一个testcase的名称可以通过属性进行更改。一个IDE中可以录制或生成多个testcase。


 

通过IDE的options-format,调整source中的显示内容,只有显示HTML的内容时,才能对代码进行手动调整,增加或减少动作。


 

当format为HTML时,可以激活table标签,对录制的内容进行手动调整。这部分基本上可以理解为QTP的关键字视图。Table整体分上下两部分,上边是已经录制的动作效果,下边可以手动添加新动作或修改已有的动作。

Command:动作的基本指令,录制会自动记录,也可以点击下拉列表选择适当的指令;

Target:实现动作的位置,也就是在哪个控件上完成动作,这里结合了XPath的内容,因此这里显示的都是xpath路径,而因为开始录制时已经设定了首页的地址,所以当前的首页地址用”/”标识,其他元素遵循xpath规定。

Value:根据实际内容填写。

 

在这里可以手动的增加两种页面校验:verify和assert。他们都能对显示内容,输出内等做验证,区别在于:

Verify:验证出现问题时,脚本的执行不会停止,会在最终结束时给出提示;

Assert:出现异常马上终止所有的脚本执行;

这个可以结合QTP的检查点进行联想,不过selenium的检查更为灵活。

 

2)        单一脚本回放

在IDE中准备好基本的脚本后,确定输入内容正确无误,也做好了验证设定,可以回放当前脚本,最终IDE会给出提示通过情况和不通过情况。

多个testcase可以设置运行不同的场景,通过java的变量等内容进行不同的用例测试;

至此,IDE的工作已基本完成,可以进入真正的自动化测试操作。

 

3)        调试selenium的自动化运行环境RC:

                        i.             配置java运行环境,JDK和JRE以及系统环境变量;

                      ii.             安装集成开发环境,因为选择使用java语言进行执行,所以我选择了比较实用的eclipse作为执行平台。

                     iii.             在eclipse创建一个javaproject;

其他内容可默认,也可根据需要新建不同的目录。

 

选中新建的project,通过属性的javaBuildPath,加载一个外部jar包,选中selenium-remote下的selenium-server.jar文件,build进project中,至此才能由eclipse驱动脚本进行测试。

 

                     iv.             把脚本放入eclipse:



 

首先需要生成一个JUnitTestCase,推荐使用Junit3,名称要保持和IDE中的testcase一致;

 

上图为基本脚本放入eclipse最初的状态,语法调试和基本使用完全遵循java在eclipse中的使用规范。

 

可以根据具体情况,建立多个JUnitCase,分别针对不同内容进行测试。

 

由于在IDE中已经对脚本进行初步的回放调试,在eclipse中就可以直接执行了。首先:启动remote组件。

在cmd中运行java –jar\selenium-server-1.0.3,确保代理服务正常运行;

右键选中要执行的Junitcase,执行run as的Junit test,就可以通过eclipse驱动脚本进行执行了。

 

当脚本执行发生错误的时候,红圈部分标识发生错误的class,右键点击可以选择焦点跳转到出错的位置。

红线部分为提示出错的内容。

若脚本调试,环境设置都正确的时候,执行结果就会告知用户本次测试通过。

 

四       Selenium结合eclipse的高级使用:

Selenium的强大之处就在于可以使用集成开发环境,让用户使用自己最熟悉的开发语言进行调试操作。IDE仅是最最基本的准备,真正的自动化工作,是由java等开发语言和selenium的外部jar进行支持的。

首先在eclipse中,引用了selenium-server.jar后,可以使用众多的class,输入“selenium.”可以自动列出所有可用的class,对于输入一半的命令,可以通过“alt+\”进行补全操作。

1)        把用例放到脚本中执行:

类似于QTP的参数化,只不过这里使用的是生成变量的办法,将需要替换的内容创建变量,统一由变量进行修改,当然结合数组进行一定的循环,可以达到更好的效果。然后根据验证的内容,选择对检查内容使用verify验证或assert验证,达到最终执行用例的效果。

2)        对数据库的检查:

QTP中的数据库检查点原理,就是通过执行指定位置的查询,然后设置搜索结果的过滤条件,判断是否通过。使用selenium,则直接使用java的数据库连接语句和查询语句进行操作,同样在查询条件上加verify或assert验证。

3)        ERP等专门针对流程的项目测试:

通过实际的使用经验发现,当使用QTP进行流程类操作,需要引用大量变量的时候,非常容易引起工具的崩溃,当选择selenium的时候,可以非常好的避免这种情况的发生。因为selenium是真正的通过编写代码实现驱动的测试工具,而且所有的变量直接写在语句中,所以当出现流程测试的时候,可以将不同的步骤和场景分别写在不同的class里,变量声明为public的形式,方便任何包中的class调用。

 

五       Selenium的扩展使用:

1)        对象识别的基础:xpath

XPath 类似档案系统的路径命名方式,“/”标识根目录,@标记标识该元素的属性,完整的一个xpath语句标识一个指定的元素,在每一个页面上标记该页面的特有元素。

例如:

/html/body/div[@id='main']/div[@id='header']/div[@id='topNav']/div[@id='channel']/ul/li[2]/a/span

从左到右,从大到小的范围,确定这个元素最终是一个span标签,而它必然是在前面一层一层的过滤限定之下的,也就是说在当前这个页面上(根是10.0.0.116),必然存在且唯一存在一个元素可由上面的xpath语句进行识别。

Xpath可以手动在eclipse里进行编写,也可以在IDE中进行先期编写,最简单的办法是通过firefox的相关插件,直接获取到某个元素的xpath值,再根据比较,在代码中替换变量,通过循环或其他办法增加代码的自动化执行效果。

 

2)        从构建版本到发送测试报告的一路自动化:selenium+ant

这里主要使用的是ant的版本构建功能,这部分更多的利用的是ant的功能,因此不在此文中进行描述,也是自身继续提高的下一个目标。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你说我听海绵宝宝派大星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值