Selenium入门基础

 

1     Web页面

对于很多做Selenium Web自动化的人来说,有时候会问到一个问题,就是我的网站是用java,Php等语言开发的。那我在做web自动化的时候要怎么处理不同开发语言做的网站呢。对于这个问题大家可以忽略,因为任何一种网站开发语言或者开发框架制作的网站在浏览器里显示的时候都是符合HTML标准的,也就是说同一个网站无论用什么语言来开发,在浏览器里来看的时候都是由一堆的html代码构成,所以说网页的展现是一种开发语言,开发架构无关的。

2     Web自动化原理

UI界面的自动化包括很多类型,包括Web自动化,Windows Application自动化,移动端自动化等等。但UI自动化的原理却是一致的。原理:通过抓取测试对象的控件,模拟操作来达到自动化的目的。后面会着重的讨论怎么样去抓取Web页面对象,至于其他几种UI自动化控件的获取不是本文的重点,不做过多介绍。

3     Dom Tree

文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。为什么我们可以获取到页面元素,并模拟操作就是因为DOM。

Dom

它定义了定义了所有 HTML 元素的对象属性,以及访问它们的方法。之所以说这部门就是想让大家知道为什么我们可以用ID,Name等属性来获取元素,并能对获取到的元素做操作。

4       Selenium介绍

1)         Selenium RC: 2004年ThoughtWorks公司开发的web自动化测试工具。SeleniumRC也即现在所说的Selenium1.0.他的工作原理是基于浏览器的JavaScript注入,因此可以支持市面上所有可以支持javascript的浏览器做自动化。但是因为他的实现机制导致了很大的局限性,最明显的是不能支持在两个浏览器窗口间切换,只能在一个浏览器做操作。对于1.0的介绍就到这,我的观点是不推荐大家使用seleniumrc做自动化,因此不做过多介绍。

2)         Selenium WebDriver:这个版本也称之为Selenium2.0版,是把slenium rc和webdriver做了合并。WebDriver是由google内部工程师开发出来的,后来开源。他的工作原理如下图所示:

Selenium_2

上图中没有提到FirefoxServer,是因为Firefox的server端是作为firefox的插件内置到浏览器中的,这也是为什么firefox浏览器在启动的时候比较慢的原因。Clinent端和服务器端的通信是通过http接口来完成的,我们写的任何一句Seleniu的代码都会被翻译成一个http请求发送给服务端,服务单解析然后来对浏览器做操作,然后将操作结果返回给客户端也就是我们的代码。

3)         Selenium Web Driver支持的语言比较多C#,java,python ,ruby等,支持多种语言得益于它的工作原理。顺便提一句目前业界各种自动化如果支持很多种语言的话,基本都是使用了webdriver的实现原理。

5     Selenium辅助工具

  • Selenium IDE
  • Developer toolbar(IE),Firebug

 

这里只写了两类,SeleniumIDE是SeleniumRc提供的一个录制工作,这里介绍给大家是想让大家用它来获取页面元素的,并不是让大家录制的。像Firebug类的工作目前新一些的浏览器都提供,只要按下F12就可以了。既然可用Firebug类的工具为什么要介绍SeleniumIDE呢,因为它在获取页面元素的时候,可以给你提供多种定位元素的方式,你可以自由的选择。

 

6     用到的其他技能

1)         Winform类自动化工具:对于模态窗口(例如浏览器弹出的确认窗口,上传下载文件的窗口等)需要使用winform自动化工具。可以使用autoit,.net自带的自动化类等处理。

2)         对于页面flash的处理可以用sikuli来处理,它是一个图片对比工具。

3)         Javascript,有时候我们需要javascript来帮助我们处理页面元素。

4)         了解浏览器渲染页面的方式,会对你调试自动化代码有很大帮助。了解了渲染方式你就可以知道页面元素是怎么样加载的。

 

7     最基本的Web自动化运行方式

做web自动化的时候会遇到一个问题就是我的用例怎么能够批量的自动化的执行。

如果你用例数量不大或者资源不足的情况下,可以选择使用jenkins+testing+webdriver

的方式来搭建你的运行框架。如果你用的语言不是java,可以把testng替换为你使用的语言自己的单元测试框架即可。

现有 3 条评论

  1. vorbei 2014年8月14日 下午12:58

    大牛有几处笔误哦,如下:
    第一段最后一句话:“与开发语言,开发架构无关的”丢了个“与”字;
    4 Selenium介绍 2)中服务端写成服务单啦;
    最后一段:jenkins+testng+webdriver

  2. vorbei 2014年8月14日 下午12:59

    资料不错,顶了

  3. Yuri 2014年8月15日 上午8:37

    通过selenium交流专用超级 191707998群信息来过来访问浏览的。比较普及易懂,谢谢。

发表评论