在我们学习selenium的po模式之前,我们先要了解什么是自动化测试,以及selenium中的八大定位的基本操作,那么接下来,您可以跟我一起走进po模式中的yaml管理数据
引言
yaml管理数据的好处:
数据清晰明了,操作简单,且与python语法规格比较接近(严格的缩进要求,不允许使用tab键对其元素),只要是左对齐的一列数据,都是同一个层级的,用-表示这是一个连续的项目
Yaml文件的具体编写
编写yaml文件前提:
1、已经在Base页中封装好了基础Api
2、在Common页写好了读取yaml数据的方法,且yaml模块已经装好
3、创建一个yaml文件(这里还是做登录的用例,所以我创建的是Login.yaml)
步骤:
<1>在Data目录下(也就是之前创好的项目)创建一个html文件,把他重命名为Login.yaml,并把有关html文件中的内容删除
<2>现在我们对yaml文件进行编写
变量介绍:
Login : 表示这是一个登录的yaml文件
title: yaml的标题,可以根据项目来命名
content: 内容,也就是我们存放的定位数据
name: 描述这是一个什么定位元素,干什么
type: 什么类型,比如id、name
value: 定位信息
有的人肯定会好奇,为什么回事小写的id、name,为什么class name 中间要有一个空格?
因为我们打印By的方式是这样的
这下就比较清晰了把
那么我们这次来在Page页中调用
from Page_Object_Model.Base.Base_Page import Base # 导入Base类
from selenium.webdriver.common.by import By # 导入By方法
from Page_Object_Model.Common.common import Common #导入公用方法
data = Common().Readyaml()['Login']['content'] # 具体拿到yaml数据(这里拿到的是Login页)
class Logins(Base): # 继承Base页中的Base类
def __init__(self,driver,url): # 初始化方法
Base.__init__(self,driver,url) # 重写父类方法,这里不做改变
def click_login(self): #点击一号店最上方的登录
self.click_element(data[0]['type'],data[0]['value'])
# 在这里我们把原先的by方式替换为这样,读取拿到的yaml数据中用下标取值的方式来实现操作
def input_username(self,text): #输入账号
self.input_text(text,data[1]['type'],data[1]['value'])
def input_pwd(self,text): #输入密码
self.input_text(text,data[2]['type'],data[2]['value'])
def click_end_login(self): # 点击登录
self.click_element(data[3]['type'],data[3]['value'])
def get_logins(self): #获取登录后的文本信息
return self.get_text(data[4]['type'],data[4]['value'])
Case页不需要改变,最后我们Run一下
copy下脚本的path,然后到Run执行方法中选择python
控制台执行结果:
HTML报告结果:
然后我们copy下html的路径到浏览器中查看结果
如有问题,博客下方留言