Selenium的使用
自动化测试的流程
Selenium是自动化测试工具,所以我了解一下自动化测试的流程。自动化测试主要包括需求分析、自动化测试计划、测试脚本设计、测试执行和测试总结5个过程,下面我们具体介绍每个过程的工作内容。
需求分析:当系统满足自动化测试条件,人力资源及相应的环境也满足自动化测试时,启用自动化测试,并且针对用户需求和软件需求分析出测试需求。比如,测试工作中哪些需求是可以自动化测试的,是自动化功能测试还是自动化性能测试等等。
自动化测试计划:首先是测试计划设计,在测试过程中哪个阶段采用自动化测试,自动化测试的进度安排、人员安排、测试环境搭建、沟通计划、风险计划、测试数据设计等。其次是自动化测试用例设计;针对需要执行自动化测试的功能和性能进行用例设计,是自动化测试脚本编写的依据。最后是设计自动化测试框架,自动化测试框架需要调用哪些文件、结构,调用的过程,以及文件结构如何划分等。
自动化测试脚本编写:针对测试用例和设计的自动化测试框架,相应的脚本编写人员通过录制脚本、修改脚本、编写脚本等方法来编写自动化测试脚本。编写完成脚本后,评审脚本。
测试执行:首先,准备自动化测试数据,执行测试脚本。其次,回归测试。根据需求和程序的修改,修改相应的测试脚本,执行测试。最后,执行脚本直到达到测试阶段的测试标准。
测试总结:自动化测试的总结一般包含在测试总结中,自动化测试总结主要总结自动化测试过程中产生的问题分布,测试过程中产品质量的参考数据。针对性能测试还会体现测试结果图,另外,包括整个测试过程中的经验教训、产品质量的整体评估等。这些都将作为后期测试工作的参考。
Selenium简介
Selenium名字的来源:Selenium的中文名为“硒”,是一种化学元素的名字,它对汞(Mercury)有天然的解毒作用,实验表明汞暴露水平越高,硒对汞毒性的拮抗作用越明显,所以说硒是汞的克星。而Mercury测试工具系列(QTP,QC,LR,WR...),它们功能强大,但却价格不菲,测试人员对此又爱又恨!故ThroughtWorks特意把他们的Web开源测试工具命名为Selenium,以此帮助大家脱离汞毒。
Selenium是一套强大的开源Web应用自动化测试的工具集。Selenium本身为Web应用程序测试提供使用的测试函数,这些函数能使测试工作简单、高效、灵活,并且能够定位UI元素、对比期望测试结果与实际执行结果。通过这些函数能够快速开发出测试脚本,从而模拟、验证测试。
与Selenium 1(Selenium-RC)相比,Selenium 2(即WebDriver)的API更容易理解和使用,其可读性和可维护性也大大提高。Selenium 2完全就是一套类库,不依赖于任何测试框架,不需要启动其它进程或安装其它程序,也不必像Selenium 1那样需要先启动服务。
另外,二者所采用的技术方案也不同。Selenium 1是在浏览器中运行JavaScript来进行测试,而Selenium 2则是通过原生浏览器支持或者浏览器扩展直接控制浏览器。对
于用户来说,Selenium 1提供的更多的是基于方法的API,所有方法都在一个类中开放,而Selenium 2的API则面向对象,不同的对象拥有不同的操作方法。
Selenium 2针对各个浏览器而开发的,它取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成,支持创建更高级的测试,避免了JavaScript安全模型的。除了来自浏览器厂商的支持,Selenium 2还利用操作系统级的调用模拟用户输入。WebDriver支持Firefox、IE、Opera和Chrome浏览器。对Safari的支持由于技术在本版本中未包含,但是可以使用SeleneseCommandExecutor模拟。它还支持Android和iPhone的移动应用测试。此外,Selenium 2还包括一个基于HtmlUnit的无界面实现,称为HtmlUnitDriver。Selenium 2 API可以通过Python、Ruby、Java和C#等编程语言访问,支持开发人员使用他们常用的编程语言来创建测试。
但是,我们不能简单的从版本号就判定Selenium 2比Selenium 1更加先进。严格地说,它们完全属于两个不同的产品而不是简单的升级关系,更像是互补关系。它们之间各有优劣:Selenium 2可以弥补Selenium 1存在的缺点(例如能够绕过JS、API更易使用),而Selenium 1也可以解决Selenium 2存在的问题(例如支持更多的浏览器)。
实战
环境搭建
我使用的集成环境是visual studio 2013,在对应使用的selenium client drivers是C#版本的.Net 4.0。下面开始搭建环境:
首先在VS中新建一个控制台应用程序,然后引用.Net 4.0中的.dll文件,在书上
(selenium自动化测试指南)看到的.dll文件有7个,但是我在网上找的.Net 4.0中只有4个(图1),只使用后两个,不过目前不影响使用。
图1 引用文件
Selenium.WebDriverBackedSelenium.dll:通过这个类库,可以实现用Selenium 1的语法来执行Selenium 2。这是一种过渡性方案,基本是针对老的Selenium 1代码,让它们以最小的代价迁移到Selenium 2去。
ThoughtWorks.Selenium.Core.dll:Selenium 1的主要API文件,在使用Selenium 1自动化测试时就靠这个类库来实现。
WebDriver.dll:Selenium 2的主要API文件,在使用Selenium 2进行自动化测试时主要就靠这个类库来实现。它是本章关注的重点。
WebDriver.Support.dll:WebDriver支持类,起辅助作用。其中包含一些HTML元
素选择、条件等待、页面对象创建等的辅助类。
运行
用using引用命名空间selenium和selenium.IE,然后在主函数中创建IE的driver对象,要导航页面需要用到对象Navigation,在C#中,要跳转页面要调用Navigation的GoToUrl()方法,具体代码见图2.
图2 实现代码
运行结果就是打开IE浏览器,并打开百度搜索页面,见图3和图4。
图3 命令行运行结果
图4 IE运行结果
问题
虽然这只是一个很小实践,但还是遇到了问题,刚开始执行时,程序没有任何错误,但是没有任何运行结果,在网上查说是因为IE安全级别太高,取消保护模式,按这样操作之后又出现了如图5所示的问题。
图5 问题描述
在网上查,还是因为IE安全设置的原因,方法是取消所有的保护模式,包括Internet、本地Internet、受信任的站点和受的站点,这样操作后就能得到预期的结果。