1. 入门

入门:http://www.yiibai.com/selenium/selenium_ide.html
视频入门:http://pan.baidu.com/s/1eQppsWE
注 :  web自动化工具(如WatiN, Selinimu,WebDriver,还有VS2010中的Coded UI等等)的原理:
通过调用IE COM接口和HTML DOM 对浏览器以及WEB测试对象的操作

2. 入门知识

(1) Selenium真的不是一个单一的工具,而是一套工具,帮助测试者更有效地基于Web的应用程序的自动化。 重点提供了API.
(2) selenium套件:
工具 描述
Selenium IDE Selenium 集成开发环境(IDE)是一个Firefox插件,可以让测试人员跟着,需要测试的工作流程,以记录他们的行为。
Selenium RC Selenium远程控制(RC)为旗舰测试框架,它允许多个简单的浏览器动作和线性执行。它使用的编程语言,如Java,C#,PHP,Python和Ruby和Perl的强大功能来创建更复杂的测试。
Selenium WebDriver Selenium的webdriver前身是Selenium RC,直接发送命令给浏览器,并检索结果。
Selenium Grid Selenium网格用于运行在不同的机器,不同的浏览器同时以最小化执行时间的并行测试的工具。

(3) selenium 演变

selenium 1 (多种浏览器,多种语言支持;)----> webDriver(编码结构更好)
webDriver----------------------------------> selenium 2 
优点:
Selenium QTP/UFT
Selenium 是一种开源工具。 QTP是一个商业工具和成本涉及许可证。
可以扩展它公开DOM各种技术 有限的附加组件和需要附加组件的技术。
可以在不同浏览器执行脚本 可以运行测试在Firefox,IE和Chrome浏览器的特定版本。
可以执行各种操作系统的脚本。 仅适用于Windows操作系统。
支持的移动设备。 支持第三方工具的移动设备。
执行在浏览器中测试,这不是必需的,重点是脚本执行的进度。 脚本执行的工具作用于浏览器(模拟用户操作)过程中需要重点
可以并联使用Selenium网格运行测试。 QTP不能并行执行测试,但与质量控制整合QTP允许测试并行执行。质量控制也是一种商业工

缺点:

Selenium QTP/UFT
仅支持基于Web的应用程序。 可以测试Web和桌面应用程序。
任何功能部件,例如对象存储库/恢复方案 QTP已经或和恢复方案内置。
没有IDE,所以这样的脚本开发,不会快于QTP。 更直观的IDE,自动化,可以实现更快。
不能在浏览器中访问控制 可以在浏览器中访问控制,如收藏夹栏,后退和前进按钮。
没有默认生成测试报告。 默认的测试结果生成工具中。
用于参数设置,用户必须依赖于编程语言 参数是内置的,易于实现。
(4)selenium 术语 

selenium core : js 框架

IDE :  火狐插件
RC: 服务端和 客户端
webDriver : selenium 2的核心  +  API +  不需要再显示的启动 selenium Server + 支持的脚本(java +  C# + python等等)

grid :  分布执行测试

(5) 如何选择工具
IDE : 入手很快。 初期投入时间少, 但一旦变化, 可能需要做比API调用更多 的 工作 。
webDriver :  需要脚本编写,API的调用。
推荐: 可以从IDE入手, 对code熟练后,  引入 webDriver 的API . 或直接学习API.. 
注 : 学习 webDriver 时, 需要的知识:  js , java, python等等

3. 如何入手

3.1  selenium webDriver分类

firefox  Driver (默认的Driver)

IE  Driver

chrome   Driver

safari

android

3.2  步骤

step 1 : 创建一个webDriver对象-控制浏览器

step 2 : 创建webElement对象-操作页面元素

3.3  页面元素定位方法

ClassName

CssSelector

Id

LinkText

PartialLinkText

Name

TagName

Xpath

注 :  还有 jquery selector 

3.4  验证

验证                      方法

page title            getTitle(); assertEquals

Attributes             getAttribute();assertNotNull

JavaScript 返回值       IJavaScriptExecutor

3.5  verify 与  assert 差异

verify :  一旦运行失败, 会继续往下执行。一个case 可以有多个verify.

assert :  一旦运行失败, 抛出异常,停止继续执行。一个case 一般只有一个assert.

3.6  测试代码定时运行

持续集成工具--jenkins CI

系统定时任务-commands

4.  实践

4.1  环境配置

下载并安装Java
下载并配置Eclipse
配置Firebug和FirePath
配置Selenium RC
配置Selenium的webdriver
具体参考: http://www.yiibai.com/selenium/selenium_environment_setup.html
 

4.2   什么是Selenium - RC

Selenium-RC意思是Selenium的远程控制(又称Selenium1.0),允许我们编写的编程语言,webdriver更强大和稳定,二者整合为selenium 2.0 
早期的Selenium使用的是Javascript注入技术与浏览器打交道,需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。开发过Web应用的人都知道,Javascript可以获取并调用页面的任何元素,自如的进行操作。由此才实现了Selenium的目的:自动化Web操作。
这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对API翻译成的Javascript质量高低。
(采用Javascript来管理整个测试过程,包括读入测试套件、执行测试和记录测试结果。它采用Javascript单元测试工具JSUnit为核心,模拟真实用户操作,包括浏览页面、点击链接、输入文字、提交表单、触发鼠标事件等等,并且能够对页面结果进行种种验证。)
参考: http://www.yiibai.com/selenium/selenium_rc.html
 

4.3  什么是 Selenium Webdriver

webdriver自动化俗称Selenium 2.0测试Web应用程序工具。 webdriver使用不同的底层框架,Selenium 遥控器使用JavaScript的Selenium 核嵌入式已经在有一定的局限性的浏览器中。 webdriver直接交互而不与Selenium 远程控制,依赖于服务器上的任何中介的浏览器。

在Selenium开发者社区努力下,不断提高Selenium webdriver与Selenium的整合。

当Selenium2.x 提出了WebDriver的概念之后,它提供了完全另外的一种方式与浏览器交互。那就是利用浏览器原生的API,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。(甚至包括了AndroidDriver和iOS WebDriver)

WebDriver Wire协议是通用的,也就是说不管是FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。例如FirefoxDriver初始化成功之后,默认会从http://localhost:7055开始,而ChromeDriver则大概是http://localhost:46350之类的。接下来,我们调用WebDriver的任何API,都需要借助一个ComandExecutor发送一个命令,实际上是一个HTTP request给监听端口上的Web Service。在我们的HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做社么事情。

在我们new一个WebDriver的过程中,Selenium首先会确认浏览器的native component是否存在可用而且版本匹配。接着就在目标浏览器里启动一整套Web Service,这套Web Service使用了Selenium自己设计定义的协议,名字叫做The WebDriver Wire Protocol。这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等等等等。

参考:
http://www.yiibai.com/selenium/selenium_webdriver.html
http://blog.csdn.net/hhb200766/article/details/6757742
http://www.cnblogs.com/sunada2005/archive/2013/12/22/3486314.html

4.4 Selenium TestNG

http://www.yiibai.com/selenium/selenium_test_ng.html

selenium自动化测试(二)相关推荐

  1. Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)

    Python+Selenium自动化测试--126邮箱自动登录脚本 版权声明:本文为博主原创文章,未经允许不得转载.https://blog.csdn.net/qiao_wan/article/det ...

  2. Python高级特性与网络爬虫(二):使用Selenium自动化测试工具爬取一号店商品信息

    上一篇介绍了Ajax动态渲染的页面的分析和爬取,通过JavaScript动态渲染的页面的方式不只有ajax这一种,还有很多其他的方式,分析他们的网页结构和加密参数难度非常大,为了解决这样的页面的数据爬 ...

  3. python测试脚本项目全程教程_《手把手教你》系列练习篇之5-python+ selenium自动化测试(详细教程)...

    1. 简介 今天我们继续前边的练习,学习和练习一下:如何使用webdriver方法获取操作复选框-CheckBox.测试不同的分辨率.如何断言title.如何获取某一个元素的text属性值等等,这些小 ...

  4. selenium自动化测试框架_selenium自动化测试框架之PO设计模式

    面向对象的特性:封装.继承.多态.在自动化中一样适用,Selenium自动化测试中有一个名字常常被提及PageObject(思想与面向对象的特性相同),通过PO模式可以大大提高测试用例的维护效率. 传 ...

  5. java二次开发浏览器内核_深入理解基于Selenium的二次开发

    对于做web端自动化测试的人来说,可能接触selenium比QTP还要多,但是我们在做基于selenium的二次开发的时候,经常会说到二次开发是 为了易于维护,很多人可能不懂得维护的价值是什么,和到底 ...

  6. python Chrome + selenium自动化测试与python爬虫获取网页数据

    一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...

  7. Selenium自动化测试系列文章汇总

    selenium系列文章汇总 Selenium自动化测试-selenium介绍及环境安装 Selenium自动化测试-浏览器基本操作 Selenium自动化测试-元素定位(1) Selenium自动化 ...

  8. Selenium自动化测试-JavaScript定位

    ------·今天距2020年37天·------ 这是ITester软件测试小栈第83次推文 做自动化过程中,会发现有的按钮点击不了,或者点击没有反应,也没有报错,或者不能处理滚动条等场景,我们可以 ...

  9. Selenium自动化测试-设置元素等待

    ------·今天距2020年54天·------ 这是ITester软件测试小栈第75次推文 selenium中有三种时间等待: 强制等待:sleep 隐式等待:implicitly_wait 显示 ...

  10. Selenium自动化测试-8.iframe处理

    ------·今天距2020年75天·------ 这是ITester软件测试小栈第61次推文 大家好 我是vivi小胖虎 听说很多城市最近的气温急转直下 在生活和行业寒冬的双重夹击中 身心灵与肉都饱 ...

最新文章

  1. Shared——The best front-end hacking cheatsheets — all in one place.
  2. VPS批量管理软件--远程桌面批量管理
  3. c#调用python函数_C#调用python脚本的方法步骤(2种)
  4. iOS利用视频做起始页
  5. 机器学习的最佳学习路线原来只有四步
  6. 使用Regions ADF 11g进行Master Detail CRUD操作
  7. 牛逼!计算机基础知识总结与操作系统 PDF 开放下载了!
  8. django请求生命周期
  9. SpringCloud工作笔记075---SpotBugs介绍--优化java代码的质量
  10. 一些关于大数据的总结
  11. Visual Studio 安装自定义插件
  12. 使用元组交换两个数据
  13. 查看CSDN历史下载明细
  14. WordPress主题Ripro子主题美化包wori-child 1.3+下载插件美化
  15. python人名抽签_办公人员的 python 妙用——抽签结果提取
  16. synchronized关键词保证线程安全
  17. cups ipp oracle,使用 CUPS 打印管理器管理打印机
  18. 清除当前目录下的.svn文件 linux/windows
  19. 俄罗斯方块的简单实现
  20. Eclipse 配置JDK

热门文章

  1. java过滤器重定向_解决ajax请求过滤器重定向不跳转 (过滤器)
  2. 四、cadence ic 5141 ——添加工艺库文件
  3. nodejs环境变量配置问题记录
  4. 实践是检验真理的唯一标准!静态路由相关配置实操①
  5. 【SSH】SSH 免密码登录配置|Secure Shell 免密认证登录|linux 生成密钥
  6. PHP代码安全基础1
  7. html5做动画视频教程,基于HTML5的Flash动画开发视频教程
  8. 河南省区块链产业联盟成立暨可信区块链技术创新大会启幕
  9. SkeyeVSS智慧办公区视频监控解决方案
  10. cad中怎么随意移动图形_CAD中不用移动命令也可以移动图形