IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> UI自动化之PO模式 -> 正文阅读

[开发测试]UI自动化之PO模式

一.背景介绍

在编写UI自动化脚本过程,需要考虑如何编写才能使脚本更容易维护及复用率更高,可读性更高。page object(以下称:PO模式)设计模式是Selenium 自动化测试项目开发实践的最佳设计模式之一,其核心思想就是将测试对象及测试脚本分层处理,对界面交互细节的封装,这样可以使测试案例更关注与业务而非界面细节,提高测试案例的可读性。在搭建ui自动化框架,使用的是po设计模式,也就是把每一个页面所需要操作的元素和步骤都封装成一个页面类中。然后使用selenium+unittest搭建
四层框架实现数据、脚本、业务逻辑分离(关键字驱动)。其中四层框架包括基础层(BasePage)、业务逻辑层(Pages)、数据层(Data)、测试用例层(Testcase)

二.模块介绍

1.基础层(BasePage)
设计一个基本的Page类,所有页面皆继承该类。提供一个页面需要实现的基本功能及公共方法。封装底层操作

2.业务逻辑层(Pages),也叫元素和操作层
按照PO设计模式,将每个页面抽象为一个类,放在Pages包里面,每个页面继承Basepage,可调用Data层数据,包括页面所有的操作对象属性和实现的功能。

3.数据层(Data)
该层存放相关数据,例如:用户数据和密码。在测试用例可通过调用数层的数据来进行操作。

4.测试用例层(Testcases)
每一个测试用例testcase都对应Pages里面的一个页面,继承unnitest.TestCase类。通过调用对应页面类的方法,数据层的数据、增加断言(assert)来验证功能的正确性。此外通过Jenkins自动执行测试、代码质量检测和部署到测试服务器、部署到生产服务器上

在PO模式中一个用例脚目录结构如下:
在这里插入图片描述
三.代码介绍
page基类:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.wait import  WebDriverWait
from selenium.webdriver.common.by import By

class Page():
    def __init__(self,driver):
        self.driver = driver

    def open(self,url):
        self.driver.get(url)
        self.driver.maximize_window()


    def find_element(self,*loc):
        try:
            wait = WebDriverWait(self.driver,timeout = 10)
            wait.until(lambda x:x.find_element(*loc).is_displayed())
            return self.driver.find_element(*loc)
        except TimeoutException:
            raise "Time out"


    def find_elements(self,*loc):
        try:
            wait = WebDriverWait(self.driver,timeout = 10)
            wait.until(lambda x:x.find_elements(*loc).is_displayed())
            return self.driver.find_elements(*loc)
        except TimeoutException:
            raise "Time out"

    def switch_iframe(self,*loc):
        name = self.driver.find_element(*loc)
        self.driver.switch_to_frame(name)

    def exit(self):
        self.driver.quit()

loginpage中放置元素和操作层

from selenium import webdriver
from selenium.webdriver.common.by import By

import time as t
from basic.page import Page

class LoginPage(Page):

    _iframe_loc = (By.XPATH,"//div[@id='normalLoginTab']/div[0]/div[0]/iframe")
    _user_loc = (By.XPATH,'//input[@name="email" and @data-loginname="loginEmail"]')
    _paw_loc = (By.XPATH,'//input[@name="password" and @placeholder="输入密码"]')
    _logbt_loc = (By.ID,"dologin")

    def user_input(self,username):
        self.switch_iframe(*self._iframe_loc)
        self.find_element(*self._user_loc).send_key(username)
        return username

    def paw_input(self,password):
        self.find_element(*self._paw_loc).send_key(password)

    def login_button(self):
        self.find_element(*self._logbt_loc).click()

test_login放置用例层

from elementpage.loginpage import LoginPage
from selenium import webdriver
from basic.page import Page
import time

class TestLogin():

    def login(self,driver,url,username,password):
        """
        :param driver: driver
        :param url: url
        :param username: 用户名
        :param password: 密码
        :return:
        """
        obj = Page(driver)
        obj.open(url) #输入URL
        lobj = LoginPage(driver)
        lobj.user_input(username) #录入用户名
        lobj.paw_input(password)  #录入密码
        lobj.login_button()  #点击登录
        obj.exit()
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:36:27  更:2021-07-16 11:37:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 14:05:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码