pageObject+unittest+selenium实现UI自动化测试

UI自动化测试框架-从入门到精通 Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构 1、Business:公共业务模块,如登录模块,可以把登录模块进行封装供调用 ------login_business.py ----Base_url.py:对应的url地址 2、Common:与业务无关的公共模块,如对Selenium的二次封装,方便后期的调用,还有一些工具类,如在读取数据时需要对读取文件进行封装 3、PageOBject:这个就应该不用多说了,页面元素的封装,.. 阅读详情

1.为什么要使用pageObject设计模式
Page Object 模式是selenium自动化测试项目开发最佳测试设计模式,主要体现在对界面交互细节的封装,这样使得测试案例更加注重页面而不是界面细节。从而提高测试用例的可读性;减少了代码的重复;提高测试用例的可维护性,特别是针对UI频繁变动的项目。

2.设计思想
Page Object模式主要是将每个页面设计为一个类class,这个类包含页面中需要测试的元素(按钮、输入框、URL、标题等)和实际操作方法。

3.如何使用:例如登录qq邮箱的web页面
3.1.定义页面基础类,用于所有页面的基础,封装所有测试页面的公共方法。

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
class BasePage(object):
    def __init__(self,driver):
        self.base_url = 'https://mail.qq.com/'
        self.driver = driver
    def _open(self):
        url = self.base_url
        self.driver.get(url)
        #切换到登录窗口的iframe
        self.driver.switch_to.frame('login_frame')
    #定义open方法,调用_open(进行打开)
    def open(self):
        self._open()
    #定位方法封装
    def find_element(self,*loc):
        return self.driver.find_element(*loc)

Python方法中入参是元组时,需要加*。因为find_element()要转入很多不同的参数

3.2.定义页面具体功能类,每个测试页面元素定位和操作方法都在这层定义,若UI发生改变只需要在该层修改对象属性即可。

#创建loginPage类
class LoginPage(BasePage):
    #用户名元素
    username_loc = (By.ID,"u")
    #密码元素
    password_loc = (By.ID,"p")
    #登录按钮元素
    login_loc = (By.ID,"login_button")
    #输入用户名
    def type_username(self,username):
        self.find_element(*self.username_loc).clear()
        self.find_element(*self.username_loc).send_keys(username)
    #输入密码
    def type_password(self,password):
        self.find_element(*self.password_loc).send_keys(password)
    #点击登录按钮
    def type_login(self):
        self.find_element(*self.login_loc).click()

主要对登录页面元素进行封装,继承基础类:BasePage

3.3.在主程序中调用(使用unittest)

#coding=utf-8
from selenium import webdriver
from pageObject import LoginPage
import unittest
from time import sleep

class Test_login_model(unittest.TestCase):
    def setUp(self) :
        print("测试开始了...")
        #驱动设置
        self.driver = webdriver.Firefox()
        #实例化
        self.login_page = LoginPage(self.driver)
    # 将单个元素操作组成一个完整的动作,包含打开浏览器、输入用户名、密码、点击登录按钮等
    def user_login(self, username, password):
        self.login_page.open()
        self.login_page.type_username(username)
        self.login_page.type_password(password)
        self.login_page.type_login()
    #用例1:登录成功
    def test_login1_success(self):
        self.user_login('xx','xxxx')
    #用例2:用户名为空
    def test_login2_username_null(self):
        self.user_login('', 'xxxx')
    #用例3:
    def test_login3_password_null(self):
        self.user_login('xx', '.')
    @unittest.skip("不需要运行")
    # 用例4:
    def test_login4_null(self):
        self.user_login('', '.')
    # 用例5:
    def test_login5_password_error(self):
        self.user_login('xx', 'xxxxxxxxxxxxxxxx')
    #结束测试
    def tearDown(self):
        sleep(3)
        self.driver.quit()
        print("测试结束了...")
        
if __name__ == '__main__':
    unittest.main()

编写unittest测试用例,必须test*格式

必看超赞!python + unittest + selenium 测试框架 GitHub 源码分享!从头搭建 WebUI 自动化测试环境 文章目录项目介绍工具准备框架结构搭建case/data/locator/page PO 思想run.py 测试套件common 共用类config.ini 参数化构建项目Assembler 装配器BeautifulReport 报告save_img 截图logging log 日志ParamUnittest 外部传参redis 配置mysql 配置RemoteWebDriver 远程远行线程存储考... 阅读详情

相关推荐

PageObject.zip

python语言编写,selenium包,采用page object自动化框架,支持将结果回填到testlink,以及设置case tag,可控制每次跑哪些tag的case,并生成测试报告

转 Page Object模式

Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。 当页面元素id变化时,只需要更改测试页Class中页面的属性即可。 Pag...

ddu32445的博客 406

Selenium使用PageObject模式测试登陆页面

Selenium使用PageObject模式测试登陆页面,列出了一些测试用户,主要实现的登陆页面的自动测试

webUI自动化之基本框架搭建(python + selenium + unittest)

该文档描述一次基于python的webUI自动化框架搭建过程及简单的使用。框架构成:python + selenium + unittest准备:注意:Webdriver.exe的版本需要和浏览器版本一致,不一致则会报错,浏览器版本可通过浏览器 “设置” --> “关于Chrome” 查看Webdriver.exe下载地址:http://chromedriver.storage.googleapis.com/index.html需掌握python基础、元素定位、三种等待方式、鼠标键盘事件、窗口切换等(多多益

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。 2748

selenium2 python自动化测试项目实战

selenium2 python自动化测试项目实战

Python+Selenium使用Page Object实现页面自动化测试

主要介绍了Python+Selenium使用Page Object实现页面自动化测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

使用selenium和unittest搭建简单的自动化测试框架

目的:使用Python的selenium库模拟浏览器的操作(如定位元素,用户输入,点击等),使用unittest来实现case的封装,参数化,测试日志生成等功能(后续通过jenkins集成,交付,部署) 使用到的库:selenium, unittest, xmlrunner 方法:创建项目selenium_unittest,并在项目下创建主目录autotest_frame, 在autotest...

wyg262的专栏 552

python-ui-auto-test:WebUI自动化:python +Selenium+单元测试+ PageObject + BeautifulReport + redis + mysql + ParamUnittest +明天+ ThreadLocal +屏幕截图+日志+多个浏览器驱动程序+ RemoteWebDriver + .ini文件阅读器+可配置的项目

| [TOC] python-ui-auto-test python + selenium + unittest + PO + BeautifulReport + redis + mysql + ParamUnittest + 多线程 + 截图/日志 + 多浏览器支持 + RemoteWebDriver +文件读取 + 全参数化构建 搭建过程中非常感谢李鹏飞大侠的技术支持!后续有问题请在如下途径私聊联系! 欢迎大家 Watch,Star 和 Fork! 框架作者:abcnull csdn 博客: github: e-mail: 框架结构 python-ui-auto-test - api-test(api 测试包,未添加内容) - ui-test(ui 测试包) - base(与项目初始化配置相关) - case(测试用例脚本)

selenium自动化测试框架_干货||Selenium Page Object 自动化测试框架-框架设计

抽空利用ECshop开源项目,写了下Selenium的Page Object自动化测试框架Ecshop├─common├─config├─data├─logs├─pages├─picture├─report├─script├─tools├─run.py详细介绍每个组件设计含义。l commonPython Package格式。存放通用功能函数,如浏览器启动函数、截图函数、日志生成函数、获取URL函...

weixin_39757743的博客 238

GT-Power柴油机瞬态性能仿真与优化——基于EGR-VGT耦合控制策略【附案例】

本文探讨了GT-Power在柴油机瞬态性能仿真与优化中的应用,重点分析了EGR-VGT耦合控制策略的实际效果。通过案例研究展示了如何通过仿真优化提升柴油机的动力响应速度和排放性能,为车辆工程领域的工程师提供了实用的技术参考。

green的博客 763

营销反作弊之 异常行为分析模型(一),附带python代码

通过对用户行为进行深入的分析,识别出与常规模式不符的异常行为,可以有效检测并阻止虚假广告点击、刷单、点击欺诈等欺诈行为。本文将详细探讨营销反欺诈中异常行为分析的方法,介绍如何通过数据采集、清洗、行为建模与异常检测,准确识别潜在的欺诈行为,并提供 Python 实现代码示例。**监督学习 (Supervised Learning):**在标注数据的帮助下,训练机器学习模型使其能预测未知数据的结果。营销反欺诈异常行为分析的整体流程涉及多个环节,确保通过对用户行为的深入分析,及时识别潜在的欺诈行为。

viviwiky的博客 1230

python+selenium Page Object 设计模式+Unittest单元测试框架

一、 Page Object 简单介绍 Page Object 是Selenium自动化测试项目开发实践的最佳设计模式之一,它主要体现在对界面交互细节的封装,这样可以使测试案例更关注于业务而非界面细节,从而提高测试案例的可读性。它的优点主要是减少代码的重复性,提高测试用例的可读性以及可维护性,特别是针对UI频繁变化的项目。 二、项目实例 接下来就以登录乐学为例来说明 1、base_page.py,...

weixin_42228683的博客 850

WSL2安装(详细过程)

适用于 Linux 的 windows 子系统允许开发人员直接在 Windows 上运行 GNU/Linux 环境 -- 包括大多数命令行工具、实用程序和应用程序,无需修改,而无需传统虚拟机或dualbot设置的开销。

qq_43636384的博客 3万+

PageObject设计模式实现UI自动化测试实例(Python+Selenium+unittest)

Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。 当页面元素id变化时,只需要更改测试页Class中页面的属性即可。 ...

青少儿编程STEAM 1209

wifi/BT芯片RTL8723DS驱动移植和测试之一wifi篇

本文主要介绍如何在stm32mp157中移植并测试芯片RTL8723DS的wifi功能。

汉尼拔勇闯天涯 8741

避坑指南:CesiumLab+ENVI处理Sentinel-2影像数据的完整流程

本文提供了一份详细的避坑指南,完整介绍了如何利用CesiumLab和ENVI工具链,将Sentinel-2卫星影像处理成可供Cesium三维地球引擎加载的离线瓦片数据。内容涵盖数据获取、SNAP预处理、ENVI影像增强合成以及CesiumLab切片配置等全流程实战步骤与关键参数优化,旨在帮助工程师高效构建自主可控的高精度离线地图服务。

weixin_29248653的博客 291

Selenium中的PageObject设计模式(Python3.6实现) 附Selenium中等待的问题

认识UI测试 个人兴趣接触了Selenium框架,刚开始的时候想必大家对这个框架还都蛮感兴趣的,放这个金字塔的意思就是,还是提醒一下,多进行基础的UnitTest(底层的单元测试),不要过分迷恋应用层的自动化框架。因为UI层如果全部实现自动化,是一个劳民伤财的事情,并且回报率很低,多关注底层的自动化测试才是明智之举。最近读了How Google Test(谷歌测试之道),书中对web产品测试...

weixin_37037165的博客 2306

RV1126双摄IMX577驱动移植避坑:从RK3588到RV1126的dts配置与内存崩溃解决实录

本文详细记录了在RV1126平台上移植RK3588的IMX577双摄驱动的完整过程,重点解决了dts配置与内存崩溃问题。通过分析硬件架构差异、驱动移植关键点及CMA内存越界问题,提供了两种有效解决方案,并分享了双摄同步优化与网络调试的实战经验,为嵌入式视觉系统开发提供实用参考。

weixin_42641741的博客 405

用python和selenium实现自动化测试框架

本文整理归纳以往的工作中用到的东西,现汇总成基础测试框架提供分享。框架采用python3 + selenium3 + PO + yaml + ddt + unittest等技术编写成基础测试框架,能适应日常测试工作需要。1、使用Page Object模式将页面定位和业务操作分开,分离测试对象(元素对象)和测试脚本(用例脚本),一个页面建一个对象类,提高用例的可维护性;2、使用yaml管理页面控件元素数据和测试用例数据。例如元素ID等发生变化时,不需要去修改测试代码,只需要在对应的页面元素yaml文件中修改即

阿里大叔说测试的博客 358

ofd转pdf报错:org.ofdrw.reader.ZipUtil.unZipFileByApacheCommonCompress【已解决】

ofd转pdf报错:java.lang.NoClassDefFoundError:org/apache/commons/io/function/IOIterator at org.ofdrw.reader.ZipUtil.unZipFileByApacheCommonCompress,java.lang.NoSuchMethodError:org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextEntry()

黄团团的个人博客 1283

Docker 实战:使用 Docker Desktop 在 MacOS 上安装 Docker

在这采用 Docker Desktop 在 Mac 上来安装 Docker。Docker Desktop 是 Docker 的管理桌面 IDE,提供了一个直观的GUI(图形用户界面),允许您直接在本机上管理容器、应用程序以及镜像。适用于 Mac、Linux 以及 Windows 环境,允许您构建、共享和运行容器化应用程序和微服务。Docker Desktop 可以大大降低在复杂配置上的时间,因此您可以专注于编写代码。它负责端口映射、文件系统问题和其他默认设置,并定期更新 Bug 修复和安全更新。

SmartSi 8008

【python+selenium自动化测试实战项目】全面、完整、详细

项目名称:**公司电子零售会员系统项目目的:实现电子零售会员系统项目自动化测试执行项目版本:v1.0项目目录项目环境本版python 36项目框架unittest单元测试框架pageobject 设计模式UI对象库思想项目设计1.一个模块(被测项目的页面)对应一个py文件及一个测试类(测试文件)2.每一个测试页面(系统的页面)中存储页面元素及此页面中涉及到的功能3.每一个用例组合在一个测试类里面生成一个py文件项目目标。

nhb687095的博客 9829

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Unittest+Selenium模块驱动自动化测试实战!

本篇来讲述Unittest+Selenium的UI自动化实战脚本!Unittest+Selenium自动化测试框架使用。

62

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32传感器实战:从ADC采样到I2C通信的完整指南

在嵌入式系统开发中,传感器是连接物理世界与微控制器的桥梁,其核心原理是将光、热、压力等物理量转换为电信号或数字信号。通过ADC模数转换和I2C、SPI等通信协议,STM32能够精准采集并处理这些信号,实现环境监测、姿态解算等应用。掌握传感器接口技术与数据滤波方法,能显著提升系统稳定性和精度。本文以STM32为例,系统讲解模拟与数字传感器的接入实战,涵盖ADC采样、I2C通信及常见问题排查,助你快速上手传感器开发。

weixin_33985679的博客 903

项目实战中PO模型的设计与封装

Page Object模式主要是将每个页面设计为一个class,其中包含页面中的需要测试的元素(按钮,输入框,标题等),这样在Selenium测试页面中可以通过调取页面类来获取页面元素,这样避免当页面元素id或者位置变化后,需要改测试代码。当元素ID变化时,只需要改测试页面Class中的页面属性即可。将页面定位与和业务分开,分离测试对象(元素对象)和测试脚本(用例脚本),提高可维护性。

软件自动化测试技术交流、资源分享 311

目前最主流的自动化测试技术selenium

1、Selenium是什么? Selenium经历了三个大的版本。 主流的自动化测试工具是QTP,现在已经淘汰。2014年左右selenium开始兴起。 自动化功能测试主要是用于提升测试人员工作效率,70%的工作时间都是在进行UI测试。全部都是基于前端界面来实现的交互性操作。尽可能实现前端的交互,用于模拟用户的实际行为。推出了基于JScore的selenium1.0版本。 Selenium ide,已经被淘汰。用于录制Firefox浏览器下的web系统脚本。 Selenium2.0 webDriver+ID

qq_34716145的博客 3万+
上一篇: Python之Qt5界面开发
下一篇: selenium web自动化判断页面元素加载完毕
一giao窝里giao
博客等级 码龄11年 37粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值