app自动化测试框架之POM模型
1.POM设计模式POM(Page Object Model):页面对象模型,是一种设计模式,用来管理维护一组web元素集的对象库。使用POM设计模式最终的目的是为了程序松耦合。在POM下,应用程序的每一个页面都有一个对应的page class每个page class都维护着该web页面的元素集和操作这些元素的方法。
·
1.POM设计模式
POM(Page Object Model):页面对象模型,是一种设计模式,用来管理维护一组web元素集的对象库。使用POM设计模式最终的目的是为了程序松耦合。
在POM下,应用程序的每一个页面都有一个对应的page class
每个page class都维护着该web/app页面的元素集和操作这些元素的方法
- base
- __init__.py
- basepage.py #里面放各种常见的功能
- common
- data_util.py #常用的方法
- config
- config.yaml #配置文件
- data # 存放各种数据
- login.yaml
- pageobjects #各种页面功能实现
- chun_page.py
- testcases
- test_login.py #测试页面
- main.py #运行页面
- run.py #可以是运行页面
基础方法类basepage.py
- 里面放的都是运行常用的方法类
class BasePage:
# 基本功能实现 # 属性的初始化
def __init__(self, driver):
self.driver = driver
# 定位
def locator(self, loc):
# 前面是方法名 后面是xxx
# loc = (Mobileby.ID, "resourceid的值")
return self.driver.find_element(*loc)
# 输入
def input(self, loc, value):
self.locator(loc).set_text(value)
# 点击
def click(self, loc):
self.locator(loc).click()
# 清除
def clear(self, loc):
self.locator(loc).clear()
# 滑动(上下左右)
def swipe(self, start_x, start_y, end_x, end_y, duration=0):
window_size = self.driver.get_window_size()
x = window_size["width"]
y = window_size["height"]
self.driver.swipe(start_x=x * start_x, start_y=y * start_y, end_x=x * end_x, end_y=y * end_y, duration=duration)
配置文件config.yaml
- 里面放到是我们的配置文件
desired_caps:
platformName: Android/ios
platformVersion: xxx #手机/模拟器的版本号
deviceName: xxx #安卓手机随便填
appPackage: xxx#包的名字
appActivity: xxxx#启动页的名称
noReset: False
功能文件yamlload.py
# 把yaml里面的数据读取出来
import os.path
import yaml
# 把yaml文件里面的信息读取出来
def readYaml(path):
with open(path, "r+", encoding="utf-8") as file:
data = yaml.load(stream=file, Loader=yaml.FullLoader)
return data
运行文件
import pytest
if __name__ == '__main__':
pytest.main(['-s', './testcases/test_login.py', '--html=../report/report.html'])
# 运行出简陋的报告文件
文件里面chun_page.py
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.common.by import By
from base.basepage import BasePage
import time
# 此处用定位工具去查找相应的值
class SearchPage(BasePage):
agree1 = (By.XPATH, "xxxx")
...定位操作
# 运用前面我们在basepage中用的方法解决我门这个继承了它的可以直接用他里面的方法
def search(self, enable):
self.click(self.agree1)
...功能的实现
更多推荐
已为社区贡献1条内容
所有评论(0)