当前位置: 首页 > ds >正文

POM及POM设计原理

POM及POM设计原理

  • 一、什么是POM
  • 二、具体项目举例子
    • 1. base层
    • 2. pageobjects层
    • 3. testcases层(test_开头)

一、什么是POM

page object model 页面对象模型,主要应用于Ui自动化测试框架的搭建,主流设
计模式之一。
结合面向对象编程思路 :把项目的每个页面当做一个对象来进行编程。

  • POM一般分为四层: 项目=n个页面=base层+pageobject层
    • 第一层: base层:描述每个页面相同的属性及行为
    • 第二层: pageobjects层:每个页面独有特征及独有的行为
    • 第三层: testcases层:用例层,描述项目业务流程
    • 第四层: testdata:数据层

pom模式设计意义:层次更加清晰,方便管理以及提供代码的复用性及扩展性

二、具体项目举例子

在这里插入图片描述

1. base层

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
# 定义一个类:描述每个页面相同的属性及行为
class BasePage:# driver是driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps),将driver设置为内部属性def __init__(self, driver):self.driver = driver# 元素定位,其中loc参数为定位方式以及对应的值,eg:loc = (AppiumBy.ID, "resourceid")def locator(self, loc):# return self.driver.find_element(AppiumBy.ID, "resourcceid")return self.driver.find_element(*loc)# 输入def input(self, loc, value):self.locator(loc).send_keys(value)# 点击def click(self, loc):self.locator(loc).click()# 滑动(上下左右)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)

2. pageobjects层

“”“登录页面
”“”
from base.basepage import BasePage
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
class LoginPage(BasePage):# 属性:每一个操作相应的定位el_cancle = (AppiumBy.ID, "android:id/button2")el_add = (AppiumBy.ID, "com.tal.kaoyan:id/activity_splash_guidfinish")el_username = (AppiumBy.ANDROID_UIAUTOMATOR, "new UiSelector().text('请输入姓名‘)")el_login = (AppiumBy.ANDROID_UIAUTOMATOR, "new UiSelector().text('登录‘).resouceid")# 行为# 登录def login(self, username, passwd):self.click(self.el_cancle)# 左滑两次for i in range(0, 2):self.swipe(0.9, 0.5, 0.3, 0.5)self.click(self.el_add)self.input(self.el_username, username)self.input(self.el_passwd, passwd)self.click(self.el_login)

3. testcases层(test_开头)

from pageobject.login_page import LoginPage
from appium import webdriver
import pytestclass TestLogin:# 设置终端参数,实际项目中用yaml数据格式封装到data中desired_caps = {"platformName": "Android",  # 平台名称:IOS、Android、Firefoxos"platformVersion": "5.1.1",  # 设备系统版本号"deviceName": "127.0.0.1:62001",  # 设备名称,可通过adb devices查询"appPackage": "com.tal.kaoyan",  # 启动的包"appActivity": "com.kaoyan.ui.activity.AppStarterActivity",  # 启动的activity"noReset": True  # 不重置用户信息}# 发送指令给到appium servicedriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)def test_login(self):login_page = LoginPage(driver=self.driver)login_page.login("huahua", "huahuahuahua")if __name__ == '__main__':pytest.main()
http://www.xdnf.cn/news/11783.html

相关文章:

  • Umi安装教程
  • 沉没成本
  • 整合StarRocks主键表全部知识点
  • iframe标签常见问题和解决方法(持续更新)
  • 我们公司用了7年的Dubbo架构技术栈(稳的一批),这套架构真绝了!
  • VNC虚拟网络控制台(概述、windows系统连接linux系统演示)
  • Spring Boot核心原理
  • 《康熙王朝》剧情分集介绍【全】
  • 新鲜出炉的JSON,拿走不谢!
  • 充分且简单!使用 Express 打造专属“轻量代理神器”
  • Java小白一文简单普及Java中的String关键字
  • VS Code :下载、安装、常用插件、工作空间概念、运行html
  • VMware虚拟机、VMware Tools、常用设置、资源分配和卡顿问题、其他常见问题
  • 使用BASE64实现编码和解码
  • php 能否制作图形,PHP制作 3D图形之自定义图形及矢量图[多图]
  • Wi-Fi 6(802.11ax)解析24:802.11ax中MU-MIMO和OFDMA的区别
  • 10个可爱的外国互动型网站
  • 免费3D模型网站大盘点,你推荐哪一个?
  • 俺常用的资源网站
  • 搭建 PHP 开发环境:详细步骤和示例代码
  • 使用Pano2VR实现全景图切换和平面图效果
  • Servlet系列:(HttpServletRequest、HttpServletResponse、ServletContext、ServletConfig)详解
  • 002java jsp SSM springboot医护人员排班系统(源码+文档+开题+运行视频+讲解视频)
  • CUDA开源 轻松跑AMD GPU/Intel x86 CPU
  • 3日行程安排
  • 特殊字符大全(只需这一文章)
  • 化妆品展示网页设计作业 静态HTML化妆品网站 DW美妆网站模板下载 大学生简单网页作品代码 个人网页制作 学生个人网页设计作业
  • 收藏几个代码自动生成器!尚未使用,不置可否。
  • 地址标准化服务AI深度学习模型推理优化实践
  • 图论基础算法