- base
- 1. 新建base 类
- 2. 填充base 内容
- 3. 注意
- page
- 1. 搭建框架
- 2. 填充
- 业务层实现
搭建框架:
1. 新建base 类如下所示
这些方法解包的时候,只要一次解包 —— 在查找元素的时候解包
driver 是虚拟的,调用 base 的时候传入
loc 真正使用 loc 的方法,只有查找元素的时候使用
class base:
# 初始化
def _init_(self):
pass
# 查找元素方法 —— 提供:点击、输入、获取文本 方法使用
def base_find_element(self):
pass
# 点击方法
def base_click(self):
pass
# 输入方法
def base_input(self):
pass
# 获取文本方法
def base_get_text(self):
pass
# 截图方法
def base_get_image(self):
pass
查找元素的方法九种,八种基础的。
一种底层的
2. 填充base 内容from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
class Base:
# 初始化
def __init__(self):
# self.driver = driver
# 临时代替driver
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.get("http://localhost")
# 查找元素方法 (提供:点击、输入、获取文本)使用 time 等待时间 poll_frequency 频率
# 下面time = 30 ,里面写 timeout = timeout 的意思是,不传参的话,默认值为 30 ,传参的话,值就是 传进来的数值
# 这就是 python 的封装
def base_find_element(self, loc, timeout=30, poll=0.5):
return WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll).until(lambda x: x.find_element(*loc))
# 点击方法
def base_click(self, loc):
# 当代码调用执行的时候 self.base_find_element(loc) 这句话就是元素了
self.base_find_element(loc).click()
# 输入方法
def base_input(self, loc, value):
el = self.base_find_element(loc)
# 清空
el.clear()
# 输入
el.send_keys(value)
# 获取文本方法
def base_get_text(self, loc):
# 注意:一定要返回元素的文本信息,不然后面调用的时候,获取的值就一直是 0
return self.base_find_element(loc).text
# 截图方法
def base_get_image(self):
self.driver.get_screenshot_as_file("../iamge/fail.png")
3. 注意
元组解包,元组()tuple
page类名 使用大驼峰
1. 搭建框架模块名: page +实际 *** 作模块名称 ,如:page_login.py
页面对象名:大驼峰
方法:设计元素,将每一个元素 *** 作单独封装一个 *** 作方法
组装:根据需求组装以上步骤
"""以下为登录页面元素配置信息"""
class PageLogin():
# 点击登录链接
def page_click_login_link(self):
pass
# 输入用户名
def page_input_username(self):
pass
# 输入密码
def page_input_password(self):
pass
# 输入验证码
def page_input_verity_code(self):
pass
# 点击登录按钮
def page_click_login_btn(self):
pass
# 获取异常登录信息
def page_get_error_info(self):
pass
# 点击异常信息框 确定
def page_get_click_err_btn_ok(self):
pass
# 截图
def page_get_screenshot(self):
pass
# 组合业务方法
def page_login(self):
pass
2. 填充
init.py
from selenium.webdriver.common.by import By
"""以下为登录页面元素配置信息"""
# 登录链接
login_link = By.PARTIAL_LINK_TEXT, "登录"
# 用户名 这里是 ID 所以 username 不用加# ,如果是 css 的话,要加
login_username = By.ID, "username"
# 密码
login_pwd = By.ID, "password"
# 验证码
login_verify_code = By.ID, "verify_code"
# 登录按钮 css 用点点 是 class
login_btn = By.CSS_SELECTOR, ".J-login-submit"
# 获取异常文本信息
login_err_info = By.CSS_SELECTOR, ".layui-layer-content"
# 点击异常提示框 按钮
login_err_btn_ok = By.CSS_SELECTOR, ".layui-layer-btn0"
"""以下为订单页面配置数据"""
page_login.py
from v4 import page
from v4.base.base import Base
class PageLogin(Base):
# 点击登录链接
def page_click_login_link(self):
self.base_click(page.login_link)
# 输入用户名 这里必须要传入 username 不然不能测试话,不能做相同业务逻辑测试
def page_input_username(self, username):
self.base_input(page.login_username, username)
# 输入密码
def page_input_password(self, pwd):
self.base_input(page.login_pwd, pwd)
# 输入验证
def page_input_verify_code(self, code):
self.base_input(page.login_verify_code, code)
# 点击登录按钮
def page_click_login_btn(self):
self.base_click(page.login_btn)
# 获取异常提示信息 看到获取一定要 return
def page_get_error_info(self):
return self.base_get_text(page.login_err_info)
# 点击异常信息框 确定
def page_click_err_btn_ok(self):
self.base_click(page.login_err_btn_ok)
# 截图
def page_get_img(self):
self.base_get_image()
# 组合业务方法
def page_login(self, username, pwd, code):
self.page_input_username(username)
self.page_input_password(pwd)
self.page_input_verify_code(code)
self.page_click_login_btn()
业务层实现
# 导包 1.unittest 2.配置页面 3.driver
# 新建测试类 并继承
# setUp
# tearDown
# 登陆测试方法
# 导包 1.unittest 2.配置页面 3.driver
import unotteat
from v4 page_login import Page_Login
# 新建测试类 并继承
class TestLogin(unittest.TestCase):
# setUp
def setUp(self):
# 实例化 获取页面对象 PageLogin
self.login = PageLogi()
# 点击登录链接
pass
# tearDown
def tearDown(self):
# 关闭 driver 驱动对象
pass
# 登陆测试方法
def test_login(self):
pass
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)