您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 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的区别关注点QTPSelenium是否收费商业,收费开源,免费开发语言VBSPython、Java、C#、php、perl、Ruby支持的浏览器IE、FirefoxFirefox、IE、Chrome、Safari、Android支持的平台WindowsWindows、Linux、Android、Ios兼容性和大小扩展性差,体积大2G扩展性强,体积小,50M七、Python-selenium自动化测试环境搭建Os:xp、server、win71、安装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自动识别数据类型,字符串赋值时可用双引号或单引号,两者区别:双引号可用于打印对象中含有单引号时注释:单行注释---#,多行注释---’’’(一对缩进相同)注意:不要用一些关键字命名:selenium3、输入输出函数:输入函数: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)–字符串采用%s4、元组/列表定义:s=(1,2.5,'much')----tuples=[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、输出值468range(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]前面)插入该值m5、追加:s.append(n)-------在该元组末尾追加n6、连接两个列表: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条件:语句体1Else:语句体2If条件1:语句体1Elif条件2:语句体2Elif条件3:语句体3Else:语句体例子a=0ifa0:a+=1printaa=input()ifa0:a+=1else:a-=1printaa=input()ifa0:a+=1elifa==0:a-=1elifa0:a+=2printa例子:输入一个数,判断该数的等级:90-100:等价为A……60以下:等级为E注:Python不支持&&、||,需要and、or代替,同时也支持多个条件连接:0a10预习:面向对象的类、属性、方法、实例化、作业:输出100以内的所有质数(只能被1和其本身整除的数)第二天一、Python语言学习下1、循环循环四要素:1、定义循环变量;2、循环条件;3、循环体;4、循环变量发生变化n=0;n5;printn;n+=1把程序做成循环的步骤:A、确定循环体,全部选中用Tab键内推,用循环结构包裹B、从上到下依次编写:1/2/4a、while循环语法:循环变量while条件:循环体循环变量发生变化例子:i=0whilei5:printii=i+1练习:计算1+2+3+4……+100的和Sum=Sum+ib、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和breakcontinue:停止当前这次循环,继续下次循环break:跳出所有循环例子:foriinrange(1,5):ifi==3:break/continueprintielse: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+ba=input('1st:')b=input('2nd:')add(a,b)练习:设计一个计算器,输入两个数,自动实现加减乘除(进阶:根据用户输入的计算符号计算结果)3、面向对象的类、属性、方法1.基础:类:具有相同的特性,且能够完成某些动作的事物组成的一个集合属性:类中的事物所具有的特性,趋于静态方法:类中的事物所能够完成的动作或功能,趋于动态实例/对象:类中某一个具体的对象或实例实例化:定义类中某一个对象的过程2.类的定义:简单类的创建123用法:class类名(object):属性方法注意:属性和方法可以为空,里面直接写pass即可,表示是一个空类例子:classPerson(object):deftakefood(self,food):printfoodprint'小明吃',food注:dir(类名),可查看类中的方法3.类的实例化:变量=类名('xx')---是否需要传参就看__init__方法中除了self是否还有其他参数4.类中方法的调用:实例名.方法名('xx')---是否需要传参就看该方法中除了self是否还有其他参数练习:a、定义一个学生类:Student、内部含有一个方法:study,实现打印:小明学习xx课程b、定义一个类名:Student—学生、类内部含有一个属性:sno—学号,一个方法:study—学习,实现打印:学号为xx的学生,学习xx课程5.继承语法:例子:练习:定义一个Teacher类,继承Person类,拥有自身的属性gh,自身的方法:te
本文标题:Selenium自动化测试
链接地址:https://www.777doc.com/doc-1723068 .html