预习:
面向对象的类、属性、方法、实例化、
作业:
输出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编写:
标签名