django安装--python3 -m pip install django
接口--就是一个类,下面定义了一些方法
request---是做web接口的一个库--pip install request
json格式相当于是字典格式的字符串如{1:2}---"{1:2}"
接口测试返回的是数据--get请求可以不带参数,post请求要带参数
接口测试eg:
循环字典的方法:
zidian = {name:zhangsan, password:12345}
for key,value in zidian.item() ----.item()就是代表按键值对方式读取
跨目录引包aaa文件夹下的account.py文件--方法如下
import sys
sys.path.append('\\aaa')
print (sys.pat) ---就可以查看是否加到环境变量里去里
from aaa.account import add ----add是方法--这就引包成功了
xpath运用:
find_element_by_xpath('//div[@id=''kw]/span/form/input[@id='wd']/form/input') ----类似绝对路径的查找方式
find_element_by_css('form#form>span>input[maxlenth=''255]')---form表单有一个id为form的元素--css更好
修改html页面字体文案的方法如图,先定位再修改
定位元素另外一种书写格式--一般不建议用
driver.currrent_url ---当前页面地址
判断一个元素是否显示出来:is_displayed()--返回的是true或者false
result = driver.find_element_by_id('kw').is_displayed()
print(result)
解决编码问题的万能办法:引入包:--相当于把系统编码类型转换成utf-8
import sys
reload(sys)
sys.setdefaulttencoding('utf-8')
模拟鼠标点击操作要先引包
from selenium.webdriver.common.action_chains import ActionChains
right_click=driver.find_element_by_id('kw')
ActionChains(driver).context_click(right_click).perform() ------执行鼠标右击需要用context_lick(),perform就是提交的动作
键盘事件--要先引包
from selenium.webdriver.common.keys import keys
driver.find_element_by_id('kw').send_keys('Keys,BACK_SPACE') ---Keys是必须要有的
验证信息:
1种title:
title = driver.title
print(title)
now_url = driver.current_url
print(now_url)
2种,通过页面上出现文字验证 ---一般不用if断言
user = find_element_by_id('kw').text
print(user)
if user == 'zhukang'
print('ok')
else:
print('erro')
等待:显示等待--等待某个元素,建议用隐式等待
隐式等待--每个元素都会等待10s
find_elements_by_id()---复数形式--例如复选框有多个
多表单切换一个是通过id,也可以通过xpath,建议是xpath
6课---多窗口切换
1,获取当前窗口句柄: driver.current_window_url
2,获取所有窗口句柄:driver.window_handles
3,切换窗口的方法:driver.switch_to_window()----括号里写跳转的窗口
上传文件可以用过send_key--比如邮箱中添加附件,先定位上传按钮的元素如name为file
driver.find_element_by_name('file').send_key('D:\\upload_file.txt')
如果上传是windows窗口,f2定位元素就不行,可以借助工具Autoit,分号;代表注销类似python的#
eg:
文件的下载
cookie:
cookie是写在服务器端的
滚动条:--进行翻页
close()--是指关闭一个
quit()---全部退出
8课--model
1,函数封装的时候如果报错driver没有被定义,则应该函数括号里面应该都传个driver的参数
2,多个用户登陆,想都公用一个登陆函数,这时就应该参数化,用tex和for循环
通过cxv或者xls打开
ou
xml方式读取--标签可以随便配置的,属性也是自己定义的,标签对中间可以放东西比如文本,标签对有层级关系但并无影响--xml是用来存储数据的,html是用来展示前端页面的
3,跨目录方法:
impory sys
sys.path.append('\跨目录文件名如pub')
from pub import public ----pulic是pub文件下的py文件----如果还是运行失败就应该在pub下面创建一个_init_.py的空文件--表示可以被python调用的目录
10课ide,嵌套在浏览器里,可以录制和导出不同语言
verify Title---验证,验证失败里还是会继续走下一步
assertText---断言,断言失败里就停止运行
11课unittest单元测试框架--作用:1,用于测试的组织和执行测试用例,比较规范 2,测试结果预期和实际结果比较 3,提供丰富的日志,成功和失败日志
单元测试都是通过 unnitest.main()方法去执行的-且定义的函数是以testxx(self)开头的且带self,定义的类必须是 class Test(unittest.Testcase):书写方式
代码可以通过selenium ide录制脚本
eg:
class Count:---类,下面一般有def _init_ (self,*arg) 初始化方法,有点像单元测试set up() 方法,这样类下面的函数就不用传其他参数,只用一个self即可
if __name__ == '__main__' 作用是下面的方法别人看不见也不同调用,只能在这个页面用
单元测试特点:
测试用例必须是以test开头的方法,类一定要继承单元测试TestCount(unittest.TestCase),测试套件就是装测试用例的容器
组织测试用例--根据每个功能写一个测试类,分文件,
discover---执行两个测试文件:1,导入测试的模块,用测试集--不推荐 2,用discover方法
1,当前目录下的要执行的测试文件
2,不同目录不能被执行的时候,可以在别的目录加上_init_.py文件
unittest.main()--的执行顺序
12课htmltestrunner--测试报告--先去下载,就是一个py文件--要放到python的目录下面,用的时候要引包
测试报告要加内部注释更好
报告要生成新的时间--最好用 time.strftime("%y_%m_%d %H:%M:%S")
13课。自动发邮件功能---定时跑--先引包 和email的格式和头部
1,以html文本形式展示
2,种,以附件形式展示
可以直接定义一个发送邮件的函数,这样就直接调用即可
找到最新的报告--发送出去--sort
os模块是执行本地的一些操作,如本地的一些exe文件,os.listdir---获取当前一些文件目录
14课,grid作用主要是多浏览器多平台,可以分为多节点去控制
15课需要再研究
appium