Selenium自动化测试.docx

上传人:b****8 文档编号:28357077 上传时间:2023-07-10 格式:DOCX 页数:46 大小:222.56KB
下载 相关 举报
Selenium自动化测试.docx_第1页
第1页 / 共46页
Selenium自动化测试.docx_第2页
第2页 / 共46页
Selenium自动化测试.docx_第3页
第3页 / 共46页
Selenium自动化测试.docx_第4页
第4页 / 共46页
Selenium自动化测试.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

Selenium自动化测试.docx

《Selenium自动化测试.docx》由会员分享,可在线阅读,更多相关《Selenium自动化测试.docx(46页珍藏版)》请在冰豆网上搜索。

Selenium自动化测试.docx

Selenium自动化测试

自动化测试---selenium

第一天

一、前言:

自动化测试

功能自动化----QTP、selenium

性能自动化----Loadrunner、Jmeter

接口自动化----jmeter

二、web自动化测试的价值

a、解决面试中遇到的自动化测试问题(元素的定位、操作方法、框架)

b、解决工作中的自动化测试任务(需求,计划,方案,用例(脚本))

课程安排

第一天:

1、web自动化测试基础知识

2、web自动化测试环境搭建

3、Python开发语言的学习(上)

第二天:

1、Python开发语言学习(下)

2、SeleniumIDE工具的使用

3、初级脚本编写(定位方式和操作方法)

第三天:

1、高级脚本编写(xpath、css定位)

2、定位中的难点(框架、)

3、脚本的参数化

4、测试框架的设计和使用

第四天:

1、测试套件的使用

2、测试报告的生成及截图

3、测试框架的设计

第五天:

后续更新

三、什么是自动化测试?

手工web测试的主要内容?

A、功能测试

a)功能实现

b)文字链接

c)图片内容

d)表单测试

e)前后台交互

B、非功能

a)兼容性(浏览器)

i.静态页面

ii.动态页面

iii.插件

b)安全性

i.Cookie测试

ii.Session测试

iii.SQL注入

iv.跨站脚本攻击

v.插件

c)效率(性能)

C、数据库

a)增删改查测试

b)连接测试

c)初始化数据加载测试

d)事务测试

e)存储过程的测试

D、外部接口

a)用户接口

b)软件接口

c)硬件接口

自动化测试:

由机器或工具代替手工执行软件测试,单击被测试软件的界面,执行一系列操作并进行验证的过程

四、开展自动化测试的条件?

1、手工测试无法完成,需要投入大量的时间和人力

2、需求变更不频繁,比较稳定

3、项目周期足够长

4、自动化测试脚本可复用

5、手工测试基本通过

五、自动化测试的原理

手工执行用例:

1、打开浏览器,访问目标网址

2、点击登录,进入登陆页面

3、输入用户名

4、输入密码

5、点击登录

6、验证登陆成功

自动化执行用例:

1、调用API函数(webdriver)启动浏览器,使用get方法访问目标网址

2、通过定位目标对象的属性,使用click操作方法

3、通过定位目标对象的属性,使用send_keys操作方法

4、通过定位目标对象的属性,使用send_keys操作方法

5、通过定位目标对象的属性,使用click操作方法

6、使用断言函数(比较函数),判断是否登录成功

六、QTP和selenium的区别

关注点

QTP

Selenium

是否收费

商业,收费

开源,免费

开发语言

VBS

Python、Java、C#、php、perl、Ruby

支持的浏览器

IE、Firefox

Firefox、IE、Chrome、Safari、Android

支持的平台

Windows

Windows、Linux、Android、Ios

兼容性和大小

扩展性差,体积大2G

扩展性强,体积小,50M

 

七、Python-selenium自动化测试环境搭建

Os:

xp、server、win7

1、安装Python---python-2.7.6.msi,一路下一步,默认安装在C盘,配置path环境变量:

追加Python安装目录C:

\python27到path末尾,不要忘记路径前面加分号,验证:

win+r打开运行,输入cmd进入dos环境,输入Python回车

查看是否进入Python环境。

2、安装setuptools-0.6c11.win32-py2.7.exe,一路下一步,默认安装。

3、安装selenium---selenium-2.40.0.tar.gz,

A、解压该压缩包,移动到C:

\Python27\Lib\site-packages目录下,win+R打开运行,输入cmd进入dos环境

B、使用cd命令进入C:

\Python27\Lib\site-packages\selenium-2.40.0,输入dir查看setup.py文件

C、输入安装命令:

Pythonsetup.pyinstall回车

4、安装seleniumIDE、Firebug插件,打开Firefox浏览器,将插件依次拖入浏览器界面,提示立即安装,安装然后重启浏览器即可

验证Python-selenium环境:

右击选择EditwithIDLE打开验证selenium.py,修改网址,点击F5运行。

 

八、Python语言的学习(上)

1、基础知识

数据结构:

常量、变量、元组(列表)、字典

数据类型:

intfloatstr

算法:

分支和循环

面向对象:

类、属性、方法

封装、继承、多态

2、Python语言的特点:

例子:

定义三个不同类型的变量,赋值,输出

无头文件、无主函数、无大括号、无分号,简洁,靠缩进来区分语句,且变量的定义不需要书写类型,直接赋值,Python自动识别数据类型,字符串赋值时可用双引号或单引号,两者区别:

双引号可用于打印对象中含有单引号时

注释:

单行注释---#,多行注释---’’’(一对缩进相同)

注意:

不要用一些关键字命名:

selenium

3、输入输出函数:

输入函数:

input和raw_input()

例子:

a=input(“提示信息:

”)、b=raw_input(“xxxxxxxxx”)

区别:

input函数自动识别数据类型,raw_input函数默认接收的全部都为str

多个数据同时输入:

a,b=input('请输入:

'),raw_input不支持此用法

注:

input函数输入字符串类型时,需要手工添加引号

数据类型查看函数:

type(变量名)

例子:

printtype(a)

输出函数:

print'结果为:

',a,b

例子:

printa,bprint("%d,%f,%s")%(a,b,c)–字符串采用%s

4、元组/列表

定义:

s=(1,2.5,'much')----tuple

s=[1,2.5,'much']----list

#tuple类型的元组内的值不可改变,而list类型的元组可以改变

引用:

#引用方式:

#1整体应用---元组名

例子:

prints

#2下标引用---下标从0开始

例子:

prints[2]

#3下限、上限和步长

例子:

prints[1:

7:

2]

---下限表示从谁s[1]打印,上限表示打印到谁s[7]但是该数默认不打印,步长是下一元素的增量,步长为1可省略,

#4特殊引用

例子:

prints[-2]、prints[1:

:

2]

练习:

定义一个0-9的元组,1、输出倒数第3个元素;2、输出值468

range(n):

产生一个0到n-1的列表

range(m,n):

产生一个m到n-1的列表

range(m,n,i):

产生一个m到n-1,步长为i的列表

操作方法:

1、逆序存放:

s.reverse()---改变原来元组的值

2、排序存放:

s.sort()------改变原来元组的值

3、排序:

sorted(s)---------不改变原来元组的值,只返回一个排序结果

4、插入:

s.insert(n,m)-----在某一位置(s[n]前面)插入该值m

5、追加:

s.append(n)-------在该元组末尾追加n

6、连接两个列表:

m.extend(n)---将m和n连个列表连接

7、删除指定元素:

m.pop(n)------删除m[n]并返回该值

8、删除指定元素第一次出现的值:

m.remove(n)–将第一次出现的元素n删除

9、返回该值在列表中出现的次数:

m.count(n)–返回元素n在列表中出现的次数

10、最大值:

max(s)

11、最小值:

min(s)

12、长度:

len(s)

13、删除:

dels[n]

5、字典

定义:

#大括号,键值对形式存在{‘key’:

value}

s={'a':

10,'b':

20,'c':

15}#字典内的元素没有顺序,不能够通过下标引用

引用:

只能通过键来引用或整体引用

prints['c'];prints

赋值:

当key不存在时即可为字典插入,但是如果存在,即为修改

s['d']=11

操作方法:

1、取出所有的键:

s.keys()

2、取出所有的值:

s.values()

3、取出所有的键值对,作为一个元组内的元素:

s.items()

4、清空字典:

s.clear()

5、删除:

dels[‘key’]

6、分支

分类

If-分支

If-else分支

If-elif嵌套

语法

If条件:

语句体

If条件:

语句体1

Else:

语句体2

If条件1:

语句体1

Elif条件2:

语句体2

Elif条件3:

语句体3

Else:

语句体

例子

a=0

ifa>0:

a+=1

printa

a=input()

ifa>0:

a+=1

else:

a-=1

printa

a=input()

ifa>0:

a+=1

elifa==0:

a-=1

elifa<0:

a+=2

printa

例子:

输入一个数,判断该数的等级:

90-100:

等价为A……60以下:

等级为E

注:

Python不支持&&、||,需要and、or代替,同时也支持多个条件连接:

0

预习:

面向对象的类、属性、方法、实例化、

作业:

输出100以内的所有质数(只能被1和其本身整除的数)

第二天

 

一、Python语言学习下

1、循环

循环四要素:

1、定义循环变量;2、循环条件;3、循环体;4、循环变量发生变化

n=0;n<5;printn;n+=1

把程序做成循环的步骤:

A、确定循环体,全部选中用Tab键内推,用循环结构包裹

B、从上到下依次编写:

1/2/4

 

a、while循环

语法:

循环变量

while条件:

循环体

循环变量发生变化

例子:

i=0

whilei<5:

printi

i=i+1

练习:

计算1+2+3+4……+100的和

Sum=Sum+i

b、for循环

语法:

for变量in序列:

循环体

例子:

foriin[1,2,1,4]:

printi,'ok'

range(n):

产生一个0到n-1的序列

range(m,n):

产生一个m到n-1的序列

range(m,n,i)产生一个m到n-1且步长为i的序列

 

c、continue和break

continue:

停止当前这次循环,继续下次循环

break:

跳出所有循环

例子:

foriinrange(1,5):

ifi==3:

break/continue

printi

else:

printi

练习:

求10阶乘

求100以内能被3整除的数,并将作为列表输出

列表[1,2,3,4,3,4,2,5,5,8,9,7],得到一个没有重复元素的列表

求斐波那契数列1235813……

求1000以内的质数

2、函数

a、定义:

def函数名(参数1,参数2):

----(参数可有可无)

语句体

return变量----(return可有可无)

b、调用:

变量=函数名(参数1,参数2)----(变量,参数可有可无)

1、调用;2、传参;3、接收返回值

c、例子:

defadd(a,b):

printa+b

a=input('1st:

')

b=input('2nd:

')

add(a,b)

练习:

设计一个计算器,输入两个数,自动实现加减乘除(进阶:

根据用户输入的计算符号计算结果)

3、面向对象的类、属性、方法

1.基础:

类:

具有相同的特性,且能够完成某些动作的事物组成的一个集合

属性:

类中的事物所具有的特性,趋于静态

方法:

类中的事物所能够完成的动作或功能,趋于动态

实例/对象:

类中某一个具体的对象或实例

实例化:

定义类中某一个对象的过程

2.类的定义:

简单类的创建123

用法:

class类名(object):

属性

方法

注意:

属性和方法可以为空,里面直接写pass即可,表示是一个空类

例子:

classPerson(object):

deftakefood(self,food):

printfood

print'小明吃',food

注:

dir(类名),可查看类中的方法

3.类的实例化:

变量=类名('xx')---是否需要传参就看__init__方法中除了self是否还有其他参数

4.类中方法的调用:

实例名.方法名('xx')---是否需要传参就看该方法中除了self是否还有其他参数

练习:

a、定义一个学生类:

Student、内部含有一个方法:

study,实现打印:

小明学习xx课程

b、定义一个类名:

Student—学生、类内部含有一个属性:

sno—学号,一个方法:

study—学习,实现打印:

学号为xx的学生,学习xx课程

 

5.继承

语法:

例子:

练习:

定义一个Teacher类,继承Person类,拥有自身的属性gh,自身的方法:

teach教课(课程);

1、实现gh为xx的老师,教xx课

2、实现gh为xx老师,在xx上班,一月工资xx

学习Python网站:

廖雪峰、3wschool、博客(网易、新浪、CSDN)

 

二、seleniumIDE工具

作用:

1、录制脚本,回放脚本

2、导出脚本

3、辅助定位

command:

一般用动作表示(分为两类:

action、assertion)

------action:

描述用户发出的动作(click、type,open)

------assertion:

用户去检查当前的状态(verify,assert)

Target:

web中的某个测试对象,比如:

文字、按钮、输入框等,一般用定位方式表示

Value:

操作对象时所用的值

三、selenium—webdriver脚本编写

1、webdriver是什么?

相当于一个库,提供函数使用,selenium集成API编程接口,为动态网页提供良好的web能力

selenium2.0=selenium1.0+webdriver

注:

API:

applicationprograminterface

2、基础函数:

回顾自动化执行用例:

a)调用API函数(webdriver)启动浏览器,使用get方法访问目标网址

b)通过定位目标对象的属性,使用click操作方法

c)通过定位目标对象的属性,使用send_keys操作方法

d)通过定位目标对象的属性,使用send_keys操作方法

e)通过定位目标对象的属性,使用click操作方法

f)使用断言函数(比较函数),判断是否登录成功

浏览器操作函数:

driver=webdriver.Firefox()--------------------启动浏览器

driver.maximize_window()----------------------最大化浏览器

driver.back()---------------------------------后退

driver.forward()------------------------------前进

driver.quit()---------------------------------关闭释放浏览器

driver.close()--------------------------------关闭浏览器

drvier.refresh()------------------------------刷新浏览器

driver.get(url)-------------------------------访问目标网址

time.sleep(4)----------------前提导入--------importtime

注:

1.quit更注重浏览器进程/线程资源的释放,close只关闭界面,不释放资源

2.url必须用http开头

元素定位方式:

(通过元素属性定位)

id---------------------------------find_element_by_id(id)

class----------------------------find_element_by_class_name(name)

name---------------------------find_element_by_name(name)

link_text------------------------find_element_by_link_text(link_text)

partial_link_text--------------find_element_by_partial_link_text(link_text)

tag------------------------------find_element_by_tag_name(tag_name)

xpath---------------------------find_element_by_xpath(xpath)

css------------------------------find_element_by_css_selector(css_selector)

操作方法:

click()----------------------------点击---强调事件的独立性

send_keys(‘xxx’)-----------------在输入框内输入xxx

clear()----------------------------清空目标对象上的内容

submit()---------------------------提交---强调对表单内容的提交

text-------------------------------获取目标对象上的文本信息

 

思考:

由于脚本执行速度过快,导致一些步骤执行失败,因为页面元素尚未渲染完成,脚本无法定位该对象,固在脚本步骤中添加一些必要的时间等待。

四、等待函数

driver.implicitly_wait(3)----智能等待,如果3s内元素已渲染完成,剩下的时间不再等待,若没有渲染完成,最大等待时间就为3s,对全局脚本均有效

time.sleep(3)----------------强制等待,无论3s内元素是否渲染完成,都要强制等待3s,对局部脚本有效

 

作业:

编写注册功能的自动化测试脚本

 

第三天

序言:

前面我们已介绍6中常见的定位方式,当我们如果用之前的定位方式定位不到对象或者页面元素6种的属性都为空值时怎么办?

一、xpath定位

XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。

XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。

起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSLT间的语法模型。

但是XPath很快的被开发者采用来当作小型查询语言。

简介

XPath是一门在XML文档中查找信息的语言。

XPath用于在XML文档中通过元素和属性进行导航。

获取方式:

a、使用Firebug复制:

右击目标对象,使用Firebug查看元素,在其高亮区域右击选择复制xpath路径

b、借助seleniumIDE工具

打开seleniumIDE工具,模拟操作,然后查看Target,选择xpath

c、手工编写

i.纯标签路径:

position

绝对路径:

/html/body/div/div[3]/div[2]/form/input

相对路径:

//div[2]/form/input

ii.标签和属性结合:

attribute

语法:

//标签名[@属性=属性值]

//input[@id=’word’]

//form/input[@id=’word’]----标签可以有多个,也可以只有一个

//div[@class='hotwords']/a[1]"---也可利用上层标签的属性进行定位

范例:

 

driver=webdriver.Firefox()

driver.implicitly_wait(5)

driver.maximize_window()

driver.get('http:

//127.0.0.1:

8888/iwebshop/')

driver.find_element_by_xpath("//div[@class='hotwords']/a[1]").click()

time.sleep(5)

driver.quit()

 

二、css定位

层叠样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。

CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。

相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。

CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。

获取方式:

a、使用Firebug复制:

右击目标对象,使用Firebug查看元素,在其高亮区域右击选择复制css路径

b、借助seleniumIDE工具

打开seleniumIDE工具,模拟操作,然后查看Target,选择css

c、手工编写

标签和属性组合:

标签名[属性名=属性值]

----标签名可以多个,多个时需要用空格隔开:

forminput.text

----属性可以随意:

input[type='text']"

例子:

Input[class=’xxx’]

注意:

class/id除了可以采用[属性=属性值]的写法,还可以用专用写法

通过class编写:

标签名

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1