使用po模型进行自动化测试
编写公用的父类方法
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #鼠标操作
class BasePage():'''BasePage封装所有界面都公用的方法。例如driver,find_element等''''''实例化BasePage类时,事先执行的__init__方法,该方法需要传递参数'''def __init__(self,driver,url):self.driver = driverself.base_url = url# 进入网址def get(self):self.driver.get(self.base_url)#元素定位,替代八大定位def get_element(self,*locator):return self.driver.find_element(*locator)#点击def left_click(self,*locator):self.driver.find_element(*locator).click()#ActionChains(self.driver).click(self.get_element(*locator)).perform()#输入def send_text(self,text,*locator):self.driver.find_element(*locator).send_keys(text)#清除def clear_text(self,*locator):self.driver.find_element(*locator).clear()def switch_iframe(self,*locator):self.driver.switch_to.frame(self.driver.find_element(*locator))def switch_window(self,n):self.driver.switch_to.window(self.driver.window_handles[n])#用于断言def get_title(self):return self.driver.title
编写子类并继承共有的方式进行重写
from fulei.basepage import BasePage
import unittest
from selenium.webdriver.common.by import By
class Bai(BasePage):#重写父类的初始化方法def __init__(self,driver,url):BasePage.__init__(self,driver,url)#调用父类的get方法访问网站def jinru(self):self.get()#定位元素并输入数据添加一个text接受输入的数据def srwb(self,text):self.send_text(text,By.ID,"kw")#定位元素并点击def dj(self):self.left_click(By.ID,"su")#定位hao123的元素并点击def dj_hao(self):self.left_click(By.XPATH,".//*[@id='1']/h3/a[1]")
编写实现类
from zilei.page1 import Bai
import unittest
from selenium import webdriver
class BaiDu(unittest.TestCase):#测试运行前执行@classmethoddef setUpClass(cls) -> None:cls.driver=webdriver.Firefox()cls.driver.implicitly_wait(30)#测试用例def test001(self):url="http://www.baidu.com"s=Bai(self.driver,url)s.jinru()s.srwb(123)s.dj()s.dj_hao()self.driver.switch_to.window(self.driver.window_handles[1])#测试执行完之后@classmethoddef tearDownClass(cls) -> None:# cls.driver.quit()pass
if __name__ == '__main__':unittest.main()
实现测试类
编写page2代码
from fulei.basepage import BasePage
from selenium.webdriver.common.by import By
import unittest
class Hao(BasePage):def __init__(self,driver,url):BasePage.__init__(self,driver,url)def bddt(self):self.left_click(By.XPATH,".//*[@id='userCommonSites']/ul/li[6]/div/a")
编写实现类的代码
from zilei.page1 import Bai
from zilei.page2 import Hao
import unittest
from selenium import webdriver
class BaiDu(unittest.TestCase):#测试运行前执行@classmethoddef setUpClass(cls) -> None:cls.driver=webdriver.Firefox()cls.driver.implicitly_wait(30)#测试用例def test001(self):url="http://www.baidu.com"s=Bai(self.driver,url)s.jinru()s.srwb(123)s.dj()s.dj_hao()self.driver.switch_to.window(self.driver.window_handles[1])def test002(self):url=""h=Hao(self.driver,url)h.bddt()#测试执行完之后@classmethoddef tearDownClass(cls) -> None:# cls.driver.quit()pass
if __name__ == '__main__':unittest.main()
实现po模型
使用po模型进行自动化测试相关推荐
- Python+Selenium+PO模型实现自动化测试
一. PO模型介绍 在自动化中,Selenium自动化测试中有一个名字经常被提及PageObject(思想与面向对象的特征相 同),通常PO模型可以大大提高测试用例的维护效率 PO模型又叫PO设计模式 ...
- Python Web自动化测试学习-PO模型在自动化测试中的应用(2)
公共方法篇 用例生成 页面封装 test pages basePage.py 基础页面封装 # -*-coding:utf-8-*- import os from time import sleep ...
- Selenium基于Python web自动化测试框架 —— PO模型
目录 1.前言: 2.PO模型的概念和理解: 3.PO模型的目录结构: 4.PO代码示例: 5.总结 6.重点:配套学习资料和视频教学 1.前言: 关于selenium测试框架首先想到的就是PO模型, ...
- UiAutomator2+Pytest+Allure+PO模型实现Android自动化测试
介绍 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库.其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕 ...
- Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
- Appium+Python之PO模型(Page object Model)
思考:我们进行自动化测试时,如果把代码都写在一个脚本中,代码的可读性会变差,且后期代码维护也麻烦,最好的想法就是测试对象和测试用例可以分离,可以很快定位问题,代码可读性高,也比较容易理解.这里推荐大家 ...
- po模型+unittest测试
po模型 一.PO模型介绍 二.PO的核心 三.非op模型实现 四.op模型实现 1.包含内容 2.代码实现(多页面) 一.PO模型介绍 在自动化中,Selenium自动化测试中有一个名字经常被提及P ...
- selenium自动化之PO模型
目录 一.selenium: 1.定位: 2.加载url 3.输入 4.点击 5.清除 6.获取文本内容 7.获取属性 8.切换/窗口切换 8.1Frame切换 8.2窗口切换: 9.等待 二.log ...
- PO模型(设计模式)
文章目录 什么是PO模型 PO优点: PO的核心 实例 什么是PO模型 PO模型全称:Page Object(思想与面向对象的特征相同),也叫PO设计模式.他的出现主要是为了解决自动化测试中代码量增加 ...
最新文章
- 妙招避免网络IP地址被非法修改
- 红曲面怎么做_「曲面建模」CREO陶瓷小摆件的曲面建模,怎么样分析和拆解面...
- Wince程序内存和存储内存
- Jackson学习二之集合类对象与JSON互相转化--转载
- 项目日报模板_雄东片区A单元安置房项目首栋住宅楼主体结构封顶
- 面试又栽在JVM调优上了!
- SpringBoot 实现Session共享
- Bootstrap 表单控件的状态
- 【openMV】色块追踪
- 今天,A股犹如过年!股市太火,炒股app都绷不住了
- 安卓增删改查用sql语句号码_详解Android中一些SQLite的增删改查操作
- Linux下卸载vmware
- 10分钟搞定webpack打包
- 【名词解释】7.UML类图
- 数据结构——拓扑排序算法理解和实现
- 在线分析丨相关性分析——RDA/CCA分析
- MySQL重做日志文件放在磁盘_重做日志文件
- Java进阶(七)Set系列集合、Map集合体系
- 晏殊几何学导读花间流风方程定义与引理
- 关于计算机的合成新英语词,计算机英语专业词汇的构词法
热门文章
- 关于计算机的知识作文,有关电脑的作文
- 推荐系统实践(八)UCG 利用ltf-idf方法
- 触控面板 开发_长信科技研发内核不断升级 成触控显示一体化领军企业
- 为什么装完计算机系统后进不去,电脑系统装完后为啥进不去?
- 1149:最长单词2
- matlab站点插值格点,基于xarray的气象场站点和格点插值
- 给的再多,不如懂我——Gif录制工具,这两个就够了
- MATLAB如何解决弹出路径不存在的问题
- 树莓派4B安装官方64位桌面系统
- 【科创人独家】PerfMa“寒泉子”李嘉鹏:成长和创业都要能人所不能,真强者何惧资本寒冬