Selenium 自动化测试实战

(2人)

199.50 元 5 折

全场5折优惠,咨询QQ810476411

IDE 

firefox

roolup UI 面版,导入JS

 

webdriver

[展开全文]

工具不是过程,掌握了selenium不代表就会自动化测试

selenium是什么:

UI功能测试框架、开源免费、多种浏览器、多种编程语言

使用selenium IDE:

也就是说selenium IDE提供了一个很好的录制(Recording)功能

selenium IDE的安装:

准备工作:

1.火狐浏览器Firefox

2.网络连接

打开火狐浏览器,访问:http://www.seleniumhq.org/

访问“Download”


[展开全文]

Selenium 分客户端和服务端 学习到12分钟



[展开全文]
宁baby · 2015-01-27 · 免费试听2 0

Selenium 是开源的测试工具

工具

[展开全文]

1.UnitTest 

2.登录(login163)

3.登录使用的用户名、密码从文件导入(TestBase)

4.打开各个浏览器的方法(LocalDriverFactory)

[展开全文]

IDE

WebDriver

[展开全文]

Ajax对象

JS弹出框/模态对话框

整合Selenium RC

抽象类-测试基类

测试用例参数化->数据驱动

结合HttpWatch收集性能数据->Selenium代码和HttpWatch的dll相结合,收集网络/网站性能数据


什么是Ajax?

-全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术

手动录制的脚本不一定能用上

Ajax,关键是等待时间/条件->与服务器交互的时间在不同的网络环境、硬件环境下都可能不一样。//检查http,xml状态,WebDriver可以执行JS脚本,直接return js方法作为检查Ajax有没有执行完成的条件


不同的等待方式

-Thread.sleep()

线程休眠,基于编程语言实现

没有办法预知确切的等待时间

随着测试用例数量增加,额外开销太大

不一定能适用于所有测试环境

-implicitlyWait()

不是休眠,是设置driver超时的时间阀值,是每个driver自己去实现的,线程不会白白等待

当web element当前不可用时,让WebDriver等待,不会立即抛出NoSuchElementException

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(15));

-WebDriverWait

显式等待:每500毫秒就做一次检查,要么timeout要么返回成功状态

WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,timeOutInSeconds)));

element = wait.Until(ExpectedConditions.ElementExists(by));


ExceptedConditions类

-ElementExists

-ElementisVisible

-TitleContains

-TitleIs



有没有最佳实践?

implicitlyWait+WebDriverWait

-因为implicitlyWait设置的默认值会影响所有Find Element操作

Selenium的最佳实践,应当基于编程语言+浏览器+框架版本+被测项目情况来谈论

Selenium版本,浏览器版本,编程语言版本,操作系统版本

http://code.google.com//p/selenium/issues/detail?id=5071


JS弹出框/模态对话框



整合Selenium RC


抽象类-测试基类


测试用例参数化->实现数据驱动


结合HttpWatch收集性能数据

www.w3schools.com/ajax/default.asp

[展开全文]

什么原因可能导致实施失败?

-缺乏上级支持

-缺乏团队支持

-缺乏动力


你随时都可以开始了解Selenium,但在项目中实施,务必慎重!你往往只有几个月的时间来赶上进度,说服组织继续实施下去。


如何推动Selenium实施?

-罗列棘手问题(技术上、资源上.....)

-试点项目/团队的选择

-制定度量标准


测试人员的工作会受到威胁吗?

-手工测试,是不可能完全被自动化测试替代的。

-测试人员有更多的时间在用例的设计上。

-在人过目之前只能叫issue不能叫bug。->只有人能识别

-平时只做手工执行,不能适应工作内容变化的测试人员,很可能被裁减。


如何度量自动化测试?

[展开全文]

基于Selenium测试代码的编写

查找元素:Id>Name>CSS>XPath

Page Object Model查找元素

-Id,Name是最容易最常用的方式

-CSS Selector,XPath往往会与Id,Name结合使用

-但XPath往往是最脆弱的方式->为什么?->UI变动频繁,如果根据XPath就经常需要修改。

使用相对路径访问URL

创建测试工具类和方法

-特定的验证工具类(Assert for POM,Verify)

-特定的配置类(Driver Instance, Test Data)

-特定的日志类(log4net,log4j)

......

别忘了,工具类写好之后,要在团队中广而告之,不要重复造轮子!


避免一个用例中出现多个断言

-每一个Assert都应当是有意义的,都有被执行的机会


创建测试数据集合(xml,csv,database......)

使用WebDriver的wait方法,而不是sleep

引入其他工具,去做Selenium不擅长的事

[展开全文]

功能测试自动化用例的管理

Units单元测试->类与其中的方法是否正确

Service Component集成测试->api,,模块集成后功能的正确性

UI->Selenium工作层,HTML/CSS/JS..,不考虑下层的测试任务(不重复工作/易维护的考虑)


测试用例命名

建议在测试名称中包括三个部分:

-被测功能

-被测场景的描述

-期望结果

三者之间用下划线分隔:

Login_InputNullUserName_InvalidUserException


设置测试类别

在手动测试的时候,我们往往会对测试用例进行分类,比如BVT、daily Tests、Priority1,2......

在执行自动化测试用例的时候,可以选择特定的测试类别执行。这是借由单元测试框架来实现的


让自动化构建运行自动化测试

自动化构建,至少要体现在:

-获取代码服务器上所有相关项目的最新版本

-编译所有项目

-如果有任何一部出错,(发出Email)通知相关人员

持续集成,可以理解为持续地进行自动化构建和集成的过程。比如,可以每次有人签入代码时,就进行一次构建;也可以每隔几小时构建一次。

持续集成框架Jenkins对Selenium的支持

大型项目的自动化构建,是很恐怖的事情

[展开全文]

Ajax对象

JS弹出框/模态对话框

整合Selenium RC

抽象类-测试基类

测试用例参数化

结合HttpWatch收集性能数据


Ajax对象

什么是Ajax?

全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术

手动录制的脚本不一定能用上

Ajax,关键是等待时间/条件


不同的等待方式

Thread.Sleep() //线程休眠,基于编程语言的实现

-没有办法预知确切的等待时间

-随着测试用例数量增加,额外开销太大

-不一定能适用于所有测试环境

implicitlyWait() //不是休眠,是设置driver超时的事件阀值,是每个driver自己去实现的,线程不会白白等待。

-若web element当前不可用时,让WebDriver等待,不会立即抛出NoSuchElementException

-driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(15));

WebDriverWait()

-显式等待,每500毫秒做一次检查,要么timeout要么返回成功状态


ExpectedConditions类

。ElementExists

。ElementIsVisible

。TitleContains

。TitleIs


有没有最佳实践?

implicitlyWait+WebDriverWait

-因为implicitlyWait设置的默认值会影响所有Find Element操作

Selenium版本,浏览器版本,编程语言版本,操作系统版本


[展开全文]

五个实例:


测试基类->测试代码、测试框架可以借鉴设计模式


入门的常见问题:

浏览器的安全设置。

缩放浏览器。


-Ajax处理

-JS弹出框

-整合Selenium RC

-测试用例参数化

-抽象类-测试基类

-结合HttpWatch收集性能数据

......

[展开全文]

VS测试报告:

[展开全文]

测试代码定时运行

持续集成/每日构建->更早的发现问题

Maven/Ant


单元测试:

JUnit/NUnit/VS提供的MSTest...

这些单元测试之所以会用Selenium->Selenium作为一个开源工具,不像QTP、LoaderRunner那些完整的套件做的那么好,所以要通过这些单元测试框架,由它们产生的报告,然后通过这些报告来做解析(xml->excel)...这些都是单元测试框架来做的,并不是有Selenium 接口让你来产生结果文件。(Selenium IDE可以把Selenium脚本转换成很多符合测试规范的单元测试代码)

[展开全文]

只有人能发现bug->强调自动化测试在兼容性测试、验收、回归测试、冒烟测试、版本验证测试等环节起到很重要的作用->帮我们对已有的、稳定的功能有信心,而不是对变来变去的、我们自己都摸不着头脑的。帮我们去找到bug。


[展开全文]
shakyEvil · 2014-12-11 · 日志方式 0

验证

FireBug和Chrome比IE好很多的地方就是它们的插件、开发环境。很多社区开发插件让开发和测试的工作变得有效率、便捷。


Verify/Assert差异

Verify到错的脚本还会继续执行,可以查看log

Assert到错的脚本就终止了


演示环境

配置Selenium WebDriver


[展开全文]
shakyEvil · 2014-12-11 · 验证方式 0

页面元素定位

driver.FindElement(By.Id("lst-ib"));

-ClassName

-CssSelector

-Id

-LinkText

-PartialLinkText

-Name

-TagName

-XPath


JQuery selectors

http://www.w3school.com.cn/jquery/jquery_ref_selectors.asp

JavascriptExecutor js = (JavascriptExecutor)driver;

js.executeScript("your_js-function);");

//返回相应的元素列表,不用通过其他一个个去定位 /比如页面上有很多图片,通过这种方式把所有图片链接存下来,然后 访问这些图片,获取他们http的状态码来了解图片是否可用(验收测试)。如果很多页面都要做check,人工是很累的、枯燥、没劲。


Page Object Model

把页面作为“对象”

-可维护性

-可读性

-代码重用

用CacheLookup标签:提高查找效率

PageFactory文档:

https://code.google.com/p/selenium/wiki/PageFactory


与Page Object Model类似,框架Jsoup/Nsoup可以抓取网页DOM

[展开全文]

演示:

-添加Selenium IDE模板,导出测试代码

-多种浏览器上执行测试


测试人员在具备测试思维的同时,又能够实现自动化,把自己从枯燥的工作中解脱出来,就能有更多时间去做有意思的事情

基本的编码知识:

代码也是一种工具,工具是将劳动变得高效的一种方式。调试、对象设计、封装......对它们的恐惧源自不了解。

测试框架:

调用Selenium API固然简单,但我们要的是有效的测试代码。往往会利用单元测试框架,来编写集成测试代码。

Selenium WebDriver

下载

http://docs.seleniumhq.org/download/

API列表

http://selenium.googlecode.com/svn/trunk/docs/api


NuGet Package...


兼容性测试

Selenium WebDriver

-Firefox Driver

-IE Driver

-Chrome Driver

-Safari Driver

-Android Driver

-RemoteWebDriver


WebDriver对象-控制浏览器

IWebDriver driver = new FirefoxDriver();

WebElement对象-页面元素的操作

IWebElement txtQuery = driver.FindElement(By.Id("kw"));

[展开全文]
shakyEvil · 2014-12-11 · 分类介绍 0

了解Selenium演进过程

掌握Selenium术语、基本概念

掌握Selenium IDE使用


自动化测试->工具不是过程

实施自动化测试,包括技术选型上的考虑及遇到到的常见的问题和困难。

工具为主,实施过程中的思考为辅。


Selenium是什么?

UI功能测试框架( 重头戏是API,JS框架设定->已经把浏览器上的点击按钮事件、获得文本属性、获得图片参数属性这种动作都已经写成公共方法,只要明白操作模式,调用框架,可以和其他框架进行整合)

开源免费(时间成本、人力学习成本:怎么在项目中实施搭建->持续集成的平台来很好的运用它)

多种浏览器(Chrome、Firefox、IE、苹果...)

多种编程语言(java,c#,php,perl,ruby...)


为何合并?

Selenium>WebDriver:Selenium1考虑多种浏览器和多种语言支持。

WebDriver>Selenium:WebDriver在整个设计上,整个编码的代码逻辑和结构上比Selenium1要好。

API更简单、速度、扩展性


Selenium术语

。Selenium Core:JavaScript Framework

。-IDE:Firefox插件

。-RC(Remote Control)//Selenium1核心

.服务端

.客户端

。WebDriver//Selenium2的核心

.WebDriver API

.简易架构,不再需要显式启动Selenium Server

。Grid>分布执行测试


使用Selenium IDE

何时使用Selenium IDE?

前期/后期在自动化测试的投入比上?


Selenium IDE的安装

》准备工作

.火狐浏览器firefox

.网络连接

1.打开火狐浏览器,访问

http://www.seleniumhq.org/

2.访问“Download"


测试用例面板

编辑器

log面板

Referencen面板

UI元素面板

Rollup面板


自动化测试框架为什么要和Selenium整合在一起?

Selenium转化到c#会用到NUnit或自己定义的MSTest等单元测试框架的一些方法(断言、TestCase初始化的标签...)。Selenium的测试脚本、测试代码是需要结合别的单元测试框架来执行。

Selenium IDE操作模式



如果对JS很了解,可以把Selenium IDE扩展的很强大->可以通过定义JS来复用很多命令

[展开全文]
  1. 避免一个用例中出现多个断言(每一个Assert都应该有意义,都有被执行的机会)
[展开全文]

授课老师

高级测试工程师

学员动态

QQ客服: 810476411

QQ咨询: 810476411

QQ吐槽: 810476411

服务时间: 9:00 - 21:00

刘老师: 18516031455

微信公众号:开源力量