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

发表于:2013-8-26 11:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:赵卓    来源: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则面向对象,不同的对象拥有不同的操作方法。

51/512345>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • lilinyuliyang
    2014-8-27 11:39:28

    我只想知道怎么下载http://seleniumhq.org/download/ 网页根本打不开,前面的人你们已经下载了吗?

  • maweihuizi
    2013-11-12 14:54:00

    有没有讲解详细案例的书籍呢?

  • huilin.gao
    2013-9-11 15:11:53

    @only_so_j,转义啊

  • jiguanghover
    2013-9-10 17:18:07

    同求哪可以买到这本书呢

  • only_so_J
    2013-9-03 16:55:31

    navigation.GoToUrl(https://passport.360buy.com/new/login.aspx);
    这里的“//”跟C#中的注释符重复,导致后面编辑不成功,怎么解决呢(.Net 3.5)

  • dengkele
    2013-8-28 14:53:30

    我想知道哪里能买到这本书?!

  • 我有话要说
    2013-8-26 22:04:17

    http://www.51testing.com/?uid-14994352-action-viewspace-itemid-851286

    内部人爆料51testing

  • yangjc88
    2013-8-26 14:54:10

    哪能买到这本书?谢谢

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号