对象层
对selenium进行二次封装,把定位,操作,日志打印,截图等封装到一个方法
对每个页面进行的封装,把每个页面的每个元素的操作封装成一个方法
login_page.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from tools.ui.base_ui import BaseUI
# 调用BaseUI封装登录页面模块
class LoginPage(BaseUI):
# 登录页面网址
url = 'http://qa.yansl.com/#/login'
# 用户名输入框
p_username = "name=>username"
# 密码输入框
p_password = "name=>password"
# 登录按钮
p_login = "xpath=>(//span[contains(text(),'登录')])[1]"
# 残忍拒绝按钮
p_reject = "xpath=>(//span[contains(text(),'残忍拒绝')])"
# 打开url
def m_open(self):
self.get(self.url)
# 输入用户名
def m_username(self, username):
self.send_keys(self.p_username, username)
# 输入密码
def m_password(self, password):
self.send_keys(self.p_password, password)
# 点击登录按钮
def m_login(self):
self.click(self.p_login)
# 点击取消弹框
def m_reject(self):
self.click(self.p_reject)
逻辑层
主要是按照页面功能,把实现一个页面功能需要操作的页面元素按顺序封装到一个方法内部
user_login.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from test_case.po.pages.login_page import LoginPage
def user_login(username,passowrd):
login = LoginPage()
login.m_open()
login.m_username(username)
login.m_password(passowrd)
login.m_login()
login.m_reject()
login.m_login()
业务层
把封装好的页面上的一个个功能和使用该功能需要填入的数据组合起来,实现软件的业务逻辑。
test_user.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from test_case.po.logic.user_login import user_login
def test_login(driver):
user_login("admin","123456")