Selenium-基本概念

来源:互联网 发布:淘宝手机可以开店吗 编辑:程序博客网 时间:2024/06/05 15:52

文章部分内容转载于以下文章:
http://www.yiibai.com/selenium/selenium_overview.html
http://www.yiibai.com/selenium/selenium_rc.html
http://www.cnblogs.com/hyddd/archive/2009/05/30/1492213.html

1. Selenium基本概念:

Selenium是一个Web应用程序测试工具。Selenium测试直接运行在浏览器中,支持.Net、Java、Perl等不同语言的测试脚本。目前Selenium已经得到了一些主流的浏览器供应商的支持,这些供应商使得Selenium成为其浏览器的本地部分。Selenium真的不是一个单一的工具,而是一套工具,帮助测试者更有效地基于Web的应用程序的自动化。


2.Selenium 工具

  1. Selenium IDE:Selenium 集成开发环境(IDE)是一个Firefox插件,可以让测试人员跟着,需要测试的工作流程,以记录他们的行为。

  2. Selenium RC:Selenium远程控制(RC)为旗舰测试框架,它允许多个简单的浏览器动作和线性执行。它使用的编程语言,如Java,C#,PHP,Python和Ruby和Perl的强大功能来创建更复杂的测试。

  3. Selenium Webdriver:Selenium的webdriver前身是Selenium RC,直接发送命令给浏览器,并检索结果。

  4. Selenium Grid:Selenium网格用于运行在不同的机器,不同的浏览器同时以最小化执行时间的并行测试的工具。


3. Selenium1.0和Selenium2.0版本的区别
Selenium1.0 + webdriver =Selenium2.0

目前Selenium的版本包括Selenium1.0和Selenium2.0,其中Selenium1.0包括:Selenium serverClient Libraries组成。其中Selenium server(RC)负责控制浏览器的行为,RC 主要有三部分:launcher,http proxy,selenium core,其中Selenium core内部是JavaScript库函数构成,通过这些函数从而能够实现对浏览器实现控制的效果;在编写测试用例是通过client Libraries的库。

正因为Selenium1.0是要通过JavaScript实现,但是由于每一个浏览器对于执行JavaScript都有很严格的安全限制,这就导致了Selenium1.0在某些场景下的测试工作很难进行。但是由Simon Stewart创建的Webdriver 能够选择浏览器最容易接收的语言来进行自动化测试,而且webdriver还能够调用我们系统的API,比如当用户需要模仿鼠标和键盘进行页面操作,但是其不支持并行测试。将两者的优点结合起来便是我们现在使用的Selenium2.0。

4.Selenium 3.0
Selenium 3.0做了一些不大不小的更新:
1、终于去掉了RC,简单用公式表示为:

Selenium 3.0 = Selenium 2.0 + Selenium RC(Remote Control)

2、Selenium3.0只支持Java8版本以上。
3、Selenium3.0中的Firefox浏览器驱动独立了,以前装完selenium2就可以驱动Firefox浏览器了,现在和Chrome一样,必须下载和设置浏览器驱动。
4、MAC OS 集成Safari的浏览器驱动。默认在/usr/bin/safaridriver 目录下。
5、只支持IE 9.0版本以上。


5.什么是Selenium - RC

Selenium-RC意思是Selenium的远程控制(又称Selenium1.0),是主要Selenium项目持续很长一段时间Selenium webdriver(Selenium2.0)才生效存在性。现在Selenium RC是很难使用在webdriver具有更强大的功能,但用户仍可以继续开发使用rc脚本。
它允许我们编写的编程语言,如Java,C#,Perl,Python和PHP创建更复杂的测试,如读写文件的全功率的帮助自动化的Web应用程序的UI测试,查询数据库,电子邮件的测试结果。
注:Selenium RC已被处理,只是为了理解图点和唯一webdriver进行详细说明,webdriver更强大和稳定。Selenium RC和webdriver比较在后面的章节讲解。
Selenium RC的结构
这里写图片描述
Selenium RC的工作方式是这样,
客户端库使用Selenium RC服务器经过每个Selenium命令来执行通信。
然后服务器通过Selenium命令来使用Selenium核心JavaScript命令浏览器。
在浏览器中执行使用JavaScript解释器的Selenium 命令。

Selenium RC分为两部分。
Selenium服务器启动和终止,除了它的浏览器解释并执行Selenese命令。它也通过拦截和验证器和测试的应用程序之间传递的HTTP消息作为HTTP代理。
客户端库,它提供了编程语言(Java,C#,Perl,Python和PHP)和Selenium-RC服务器中的每一个之间的接口。

Selenium RC 和TestCase的关系
这里写图片描述
(1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。
Selenium Server是一个独立的中间服务器(确切地说是代理服务器),它可以架设在其他机器上!所以测试案例通过发送HTTP请求去控制Selenium Server是很正常的。

(2).Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。

(3).测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。

(4).Selenium Core接收到指令后,执行操作。

(5).浏览器收到新的页面请求信息(因为在(4)中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的Web页面。
由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。

(6).Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。

(7).Selenium Server的Http Proxy把接收的Web页面返回给浏览器。


6.webdriver
自动化俗称Selenium 2.0测试Web应用程序工具。 webdriver使用不同的底层框架,Selenium 遥控器使用JavaScript的Selenium 核嵌入式已经在有一定的局限性的浏览器中。 webdriver直接交互而不与Selenium 远程控制,依赖于服务器上的任何中介的浏览器。它是用在以下方面:
在Selenium开发者社区努力下,不断提高Selenium webdriver与Selenium的整合。
MULT浏览器测试,包括对不能很好地支持Selenium的远程控制浏览器改进的功能(硒1.0)
处理多个帧,多个浏览器窗口,弹出窗口和警报。
复杂的页面导航。
高级用户导航,如拖动和拖放。
基于AJAX的UI元素
体系结构
webdriver最好用一个简单的架构图,说明,如下图所示。
这里写图片描述

这里写图片描述
7. Webdriver基础

通过WebDriver driver = new 不同浏览器的Driver,打开不同的浏览器;
通过driver.get(“被测试的页面网址”):便可以打开一个测试网页。

System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");driver = new ChromeDriver();driver.get("所要访问的目标URL");

补充:System.setProperty():该方法表示设置指定的键值对的系统属性。上面代码中该方法的第一个参数表示了:加载的chrome,第二个参数指向了对应的浏览器的驱动工具在本地电脑中的存放位置。