web自动化测试

学习目标

1.了解为何要进行自动化测试

2.认识Selenium的运作原理

3.通过IDE学习Selenium语句(重点)

4.学习WebDriver的使用(重点)

5.介绍在自动化过程中可能遇到的一些问题和解决思路

============================================

1.了解为何要进行自动化测试

为什么要做自动化:

(1)越来越快的开发节奏需要测试的效率也不断的提升

(2)测试执行过程中充斥著大量的重复劳动

(3)现在所流行的迭代式开发模式(比如敏捷)需要迭代式的测试与之相匹配

对自动化测试的误解:

(1)自动化测试属于白盒测试领域

(2)自动化测试仅仅适用于项目周期长的项目

(3)自动化测试不适用于需求变化频繁的项目

(4)自动化测试是手工测试的补充

(5)自动化测试用例的设计是在被测软体完成后才能进行的

(6)自动化测试就是录制和回放

(7)工具=自动化测试

2.认识Selenium

互联网的高速发展促使Web自动化测试的发展

流行的web测试自动化工具

>QTP

>LoadRunner

>WinRunner

>Robot

>Silk Test

为什么选择Selenium

(1)免费!

(2)支持多平台、多浏览器、分散式

(3)支持多种开发语言,用例管理方便

什么是Selenium

出身:

>ThoughtWorks开发的开源的Web应用程序验收测试工具

命名:

>Selenium(化学元素硒)

硒可以解汞(Mercuy)毒

组件:

>Selenium Core:Selenium核心引擎

>SeleniumIDE:FireFox的一个插件,支持脚本录制

>WebDriver:Selenium的轻量级web测试框架

认识Selenium-IDE

IDE的安装

下载安装包,这是一个xpi文件,也就是火狐插件文件,直接拖入火狐浏览器窗口即可见到安装界面

IDE的启动

安装成功后重启火狐浏览器,可以在浏览器的工具菜单栏中看到SeleniumIDE

Selenium语言

selenium语言基本语法结构

指令 [定位] [值]

读懂一段Selenium语言的命令

Select和find按钮的区别

selenium页面元素定位:

(1)id定位

id=id:指定HTML中的唯一id的元素。

(2)name定位

name=name:指定HTML中相同name的元素中的第一个元素

(3)Identifier定位

identifier=id:首先查找HTML是否存在该id的元素,若不存在,查找第一个该name的元素。与之前id=id的区别是id只能查找id属性,而identifier既可以查找id属性,也可以用来查找name属性。

(4)xpath定位

xpath是XML Path的简称,由于HTML文档本身就是一个标准的XL页面,所以我们可以使用Xpath的用法来定位页面元素。

xpath locator用XPath表达式来定位HTML中的元素,必须注意要以"//"开头。

//input[@id=ls_username] 其中属性都是以@开头。

绝对路径以「/」开头,让xpath从文档的根节点开始解析,不推荐

相对路径以"//」开头,让xpath从文档的任何元素节点开始解析

(5)CSS定位

以百度输入框为例

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off>

#css通过id属性定位,用#号表示id属性

css=#kw

#css通过class属性定位,用.表示class属性

css=.s_ipt

#css通过标签与属性的组合来定位元素

css=input#kw或css=input.s_ipt或css=input[id=kw]

(6)link定位

link="退出"

link="设置」

(7)DOM定位(Document Object Model)

DOM定位以「document」开始,所以「dom=标签并不是必须的

dom=document.getElementByld(「su")

dom=document.forms["f"].elements["wd"]

dom=document.f.wd

页面元素定位方法的选择:

如何选择定位方法?

策略是:选择简单,稳定的定位方法。

1.当页面元素有id属性的时候,尽量使用id来定位。没有的话,再选择其他定位方法

2.Css选择器执行速度快,推荐使用

3.定位超链接的时候,可以考虑link Text或partialLinkText:但是要注意的是,文本经常发生改变,所以不推荐用

4.xpath功能最强悍。但是执行速度慢,webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素,这是个非常费时的操作,所以尽量少用。实在没有办法的时候,才使用xpath。

实例:

Select元素的识别

对select元素的选择一般有以下4种:

(1)label=选项文字

(2)value=value属性值

(3)index=选项序号

(4)id=id属性值

Frame元素的识别

frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,selenium有一组方法对frame进行操作。

Frame是对象在FRAMESET元素内指定的单个框架。

Frame对象可以使用普通元素识别的所有方法,通常使用的方法

如下:

>name=frame的Name

>index=Frame序号

>relative=parent,专用于识别本frame的直属父级frame

SeleniumIDE的命令

(1)操作(action):控制应用程序操作的命令

(2)辅助(acessors):用于检查应用程序的状态,并将结果存储在变数中。

(3)断言(assertion):验证应用程序的状态是否同所期望的相一致。

任何SeleniumIDE的测试步骤都属于这些类别之一。

(1)操作类Selenium命令

Click——点击页面某按钮

Open——在浏览器URL行输入网页地址

Type——用户在页面输入框的输入

Select———模拟用户在页面中选择器的选择操作

Goback———模拟用户点击浏览器的后退键操作

Close————关闭浏览器

实例:select标签实现多选和撤销选择

命令的格式:

addSelection/removesSelection(locator.lableLocator)

(2)辅助类Selenium命令

1)storeValue(locator,variableName)

-把指定的input中的value值保存到变数中。

2)storeText(locator,variableName)

-把指定元素的文本值赋予给变数

(3)断言类Selenium命令

检查判断类

1)Assertlocation是否在正确的页面

2)assertTitle——页面Title是否正确

3) assertValue——是否正确的值

4) assetrtText———指定的页面文本是否正确

Verify,assert命令的区别:

assert—「assert」命令可以确保在验证失败的情况下测试执行将终止。一般用于程序中一旦一个值出错,该值将影响后续程序的运行。

verify—「verify」命令使SeleniumIDE继续执行,即使验证失败,测试脚本仍将继续执行。用于程序中,一旦某个值出错,但是错误结果并不影响后续程序运行。

waitFor命令

应用:在selenium脚本回放时会遇到timeout错误,往往是response返回时间较长超过了selenium的等待时间。所以使用「waitFor」命令等待条件满足后执行下一个测试步骤就可以解决这个问题。

等待类的常见例子:

(1)waitForElementPresent——等待元素出现

(2)waitForTitle——等待标题页面载入

(3)waitForValue——等待给定的值载入

其他常用命令—-pause

pause命令

语法:

pause(milliseconds)

含义:根据指定时间暂停Selenium脚本执行,单位:毫秒。

作用:常用在调试脚本或等待伺服器段响应时。

runscript命令

语法:

runscript(javascript)

作用:运行一行javascript的脚本。

document getElementByld("kw").value="LLT"

Pattern字元表达式(正则表达式)

什么是pattern?三种匹配方式:glob、regexp、exactglob:>默认不写为glob>通配符匹配,*表示任意长度任意字元串,?表示任何单个字元>例如:在verifyvalue的例子中,使用*testing*表示只要包含testing的字样就表示检查成功。

regexp:正则表达式匹配,主要是针对javascript中支持正则表达式

>value中的值必须加上:

◆「regexp:」——对大小写敏感

◆「regexpi:」—对大小写不敏感

exact:精确匹配,必须完全匹配当前字元串

应用场合:例如,当需要检查的文本中有一个真实的*号

WebDriver是什么?

webDriver一套类库,不依赖于任何测试框架,它本身就是一个轻便的自动化测试框架。Selenium webdriver具有以下特点:

>开源的WEB自动化利器

>提供了与浏览器WEB网页的API

>跨平台:windows、Linux、MAC

>跨语言:Python、JAVA、RUBY.……

>繁琐且基于Web的管理任务

By:谈老弟的软测之路


推荐阅读:
相关文章