安装并引用Selenium 2—Selenium自动化测试指南(1)

(51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)

  第5章 Selenium 2(WebDriver)

  Selenium 2(即WebDriver)是一种用于Web应用程序的自动测试工具,它提供了一套友好的API,与Selenium 1(Selenium-RC)相比,Selenium 2的API更容易理解和使用,其可读性和可维护性也大大提高。Selenium 2完全就是一套类库,不依赖于任何测试框架,不需要启动其它进程或安装其它程序,也不必像Selenium 1那样需要先启动服务。

  另外,二者所采用的技术方案也不同。Selenium 1是在浏览器中运行JavaScript来进行测试,而Selenium 2则是通过原生浏览器支持或者浏览器扩展直接控制浏览器。

  Selenium 2针对各个浏览器而开发的,它取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成,支持创建更高级的测试,避免了JavaScript安全模型的限制。除了来自浏览器厂商的支持,Selenium 2还利用操作系统级的调用模拟用户输入。WebDriver支持Firefox(FirefoxDriver)、IE(InternetExplorerDriver)、Opera(OperaDriver)和Chrome (ChromeDriver)浏览器。对Safari的支持由于技术限制在本版本中未包含,但是可以使用SeleneseCommandExecutor模拟。它还支持Android(AndroidDriver)和iPhone(IPhoneDriver)的移动应用测试。此外,Selenium 2还包括一个基于HtmlUnit的无界面实现,称为HtmlUnitDriver。Selenium 2 API可以通过PythonRuby、Java和C#等编程语言访问,支持开发人员使用他们常用的编程语言来创建测试。

  但是,我们不能简单的从版本号就判定Selenium 2比Selenium 1更加先进。严格地说,它们完全属于两个不同的产品而不是简单的升级关系,更像是互补关系。它们之间各有优劣:Selenium 2可以弥补Selenium 1存在的缺点(例如能够绕过JS限制、API更易使用),而Selenium 1也可以解决Selenium 2存在的问题(例如支持更多的浏览器)。

  5.1  Selenium 2——基于对象的测试

  为什么说Selenium 2是基于对象的测试呢?可以对Selenium 1和Selenium 2的代码进行一下对比,同样是实现系统登录这种简单的操作,它们的代码却各有不同,如程序清单5-1和程序清单5-2所示。

  程序清单5-1  Selenium 1的代码

static void Main(string[] args)
{
//实例化Selenium1对象
ISelenium selenium = new DefaultSelenium("localhost", 4444, "*firefox", http://www.360buy.com);
selenium.Start();
//打开京东登录页面
selenium.Open("https://passport.360buy.com/new/login.aspx");
//填写符合xpath的用户名文本框、密码文本框,单击登录
selenium.TypeKeys(@"//input[@id='loginname']", "UserName1");
selenium.TypeKeys(@"//input[@id='loginpwd']", "Password");
selenium.Click(@"//input[@id='loginsubmit']");
}

   程序清单5-2  Selenium 2的代码

static void Main(string[] args)
{
//实例化Selenium2对象
IWebDriver driver = new FirefoxDriver();
//打开京东登录页面
INavigation navigation = driver.Navigate();
navigation.GoToUrl(https://passport.360buy.com/new/login.aspx);
//分别获取用户名文本框,密码文本框,登录按钮
IWebElement loginName = driver.FindElement(By.Id("loginname"));
IWebElement loginPwd = driver.FindElement(By.Id("loginpwd"));
IWebElement loginButton = driver.FindElement(By.Id("loginsubmit"));
//输入用户名,密码,单击登录
loginName.SendKeys("UserName1");
loginPwd.SendKeys("Password");
loginButton.Click();
}

  可以看到Selenium 2与Selenium 1存在很明显的差异。尽管它们都属于浏览器自动化的API,但对于用户来说,Selenium 1提供的更多的是基于方法的API,所有方法都在一个类中开放,而Selenium 2的API则面向对象,不同的对象拥有不同的操作方法。


  5.2  安装并引用Selenium 2

  Selenium 2的下载地址为:http://seleniumhq.org/download/,位于“Selenium Client Drivers”栏,选择使用的编程语言版本下载即可,这些包中同时包含了Selenium 1和Selenium 2的文件,如图5-1所示。

  图5-1  下载Selenium 1

  由于在本书中的Selenium示例都将采用C#或Java编写,因此需要至少掌握C#或Java中的一种语言。如果您是C#或Java的初学者,可以先在网上参阅相关的资料。

  接下来分别介绍如何在C#和Java的 IDE环境中进行使用并创建程序。

  5.2.1  在C#IDE中使用Selenium C#

  下载之后进行解压,可以看到两个不同的文件夹,一个是.Net 3.5版本,另一个是.Net 4.0,可以根据自己的版本进行选择,然后进入对应版本的文件夹,如图5-2所示。

  图5-2  Selenium .Net类库

  接下来分别介绍部分文件的作用。

  Castle.Core.dll:Castle的核心,它是个轻量级容器,实现了IoC(Inversion of Control)模式的容器,基于此核心容器所建立的应用程序,可以达到程序组件的松散耦合,让程序组件可以进行验证,这些特性使得可以简化整个应用程序的架构,并且使得易于维护此文件与测试的关系不大。

  Ionic.Zip.dll:用于压缩和解压的库文件,可以把文件压缩成WinZip格式,也可以从该格式中解压。此文件与测试的关系不大。

  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元素选择、条件等待、页面对象创建等的辅助类。本章将对其进行详细介绍。

  至于.pdb类型的程序数据库文件,一般用于dll文件的调试,与Selenium 测试本身没多大关系。而.xml文件则是各个dll文件的API参考文档,应该仔细研究。

  C#编程使用的是Visual Studio,Visual Studio 2010的下载地址是:

  http://www.microsoft.com/visualstudio/zh-cn/download

  关于Visual Studio的安装,可参见:

  http://www.cnblogs.com/eastson/archive/2012/05/30/2525831.html

安装结束后,打开Visual Studio,然后选择“新建”→“项目”菜单命令,如图5-3所示。

  图5-3  选择“新建C#项目1”菜单命令

  在弹出的“新建项目”对话框中选择“控制台应用程序”,如图5-4所示。

  图5-4 “新建项目”对话框

  创建完毕后,将打开新建立的项目,可以看到默认创建了一个名为Program.CS的类文件,如图5-5所示。

        图5-5  默认创建的Program.CS类文件

  在解决方案资源管理器中,用鼠标右键单击“引用”,选择“添加引用”,如图5-6所示。

  打开“添加引用”窗口,选择与WebDriver相关的dll文件,单击“确定”按钮,如图5-7所示。

             

  图5-6 “添加引用”命令                             图5-7  选择相关的.dll文件


 在解决方案资源管理器中可看到该引用,如图5-8所示。

  然后在main函数中输入如图5-9中所示的代码,然后按F5执行。

                 

  图5-8  添加引用3                                   图5-9  C#代码

  运行结果如图5-10所示。

  在本章中的C#程序都可按照这种方式进行创建。

  图5-10  C#运行结果

  5.2.2  在Java IDE中使用Selenium

  下载之后进行解压,可以看到如图5-12所示的内容。

  这些文件和文件夹的作用如下。

  Libs文件夹:其中包含各种Java相关的基础框架。

  CHANGELOG:记录了Selenium的变更情况,可以用记事本将其打开阅读。

  Selenium-java-2.25.0.jar:Selenium 1和Selenium 2的主要API文件,在进行自动化测试时主要就靠这个类库来实现。

  Selenium-java-2.25.0-srcs.jar:Selenium的部分源码,感兴趣的读者可以仔细研究。

  运行Java程序和Selenium 服务器都需要先安装JDK,JDK的下载地址为:

  http://www.oracle.com/technetwork/java/javase/downloads/index.html

  注意下载时要选择对应的操作系统版本,下载后直接单击“下一步”按钮安装即可。

  然后安装Eclipse,下载地址是:

  http://www.eclipse.org/downloads/

  下载Eclipse Classic,然后解压即可使用。

 1.创建Java项目

  (1)打开Eclipse,然后选择New→Java Project,如图5-13所示。

  图5-13  Java Project菜单命令

  (2)在打开New Java输入Project name,JRE选择当前安装的JRE,然后单击Finish,如图5-14所示。

  图5-14  New Java Project对话框

  (3)进入项目页面,在Package Explorer中右键单击该项目名称,选择New→Class命令,如图5-15所示。

  图5-15  选择Class菜单命令

  (4)输入包名称和类名称,并勾选Public static void main以生成main函数,如图5-16所示。

本文选自《Selenium自动化测试指南》第五章节,本站经人民邮电出版社和作者的授权,近期将进行部分章节的连载,敬请期待!

版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。

任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。

相关文章:

新书介绍:Selenium自动化测试指南—51Testing鼎力推荐

选择浏览器开始测试—Selenium自动化测试指南(2)   



最新内容请见作者的GitHub页:http://qaseven.github.io/

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值