编写公用的父类方法

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模型进行自动化测试相关推荐

  1. Python+Selenium+PO模型实现自动化测试

    一. PO模型介绍 在自动化中,Selenium自动化测试中有一个名字经常被提及PageObject(思想与面向对象的特征相 同),通常PO模型可以大大提高测试用例的维护效率 PO模型又叫PO设计模式 ...

  2. Python Web自动化测试学习-PO模型在自动化测试中的应用(2)

    公共方法篇 用例生成 页面封装 test pages basePage.py 基础页面封装 # -*-coding:utf-8-*- import os from time import sleep ...

  3. Selenium基于Python web自动化测试框架 —— PO模型

    目录 1.前言: 2.PO模型的概念和理解: 3.PO模型的目录结构: 4.PO代码示例: 5.总结 6.重点:配套学习资料和视频教学 1.前言: 关于selenium测试框架首先想到的就是PO模型, ...

  4. UiAutomator2+Pytest+Allure+PO模型实现Android自动化测试

    介绍 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库.其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕 ...

  5. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  6. Appium+Python之PO模型(Page object Model)

    思考:我们进行自动化测试时,如果把代码都写在一个脚本中,代码的可读性会变差,且后期代码维护也麻烦,最好的想法就是测试对象和测试用例可以分离,可以很快定位问题,代码可读性高,也比较容易理解.这里推荐大家 ...

  7. po模型+unittest测试

    po模型 一.PO模型介绍 二.PO的核心 三.非op模型实现 四.op模型实现 1.包含内容 2.代码实现(多页面) 一.PO模型介绍 在自动化中,Selenium自动化测试中有一个名字经常被提及P ...

  8. selenium自动化之PO模型

    目录 一.selenium: 1.定位: 2.加载url 3.输入 4.点击 5.清除 6.获取文本内容 7.获取属性 8.切换/窗口切换 8.1Frame切换 8.2窗口切换: 9.等待 二.log ...

  9. PO模型(设计模式)

    文章目录 什么是PO模型 PO优点: PO的核心 实例 什么是PO模型 PO模型全称:Page Object(思想与面向对象的特征相同),也叫PO设计模式.他的出现主要是为了解决自动化测试中代码量增加 ...

最新文章

  1. 妙招避免网络IP地址被非法修改
  2. 红曲面怎么做_「曲面建模」CREO陶瓷小摆件的曲面建模,怎么样分析和拆解面...
  3. Wince程序内存和存储内存
  4. Jackson学习二之集合类对象与JSON互相转化--转载
  5. 项目日报模板_雄东片区A单元安置房项目首栋住宅楼主体结构封顶
  6. 面试又栽在JVM调优上了!
  7. SpringBoot 实现Session共享
  8. Bootstrap 表单控件的状态
  9. 【openMV】色块追踪
  10. 今天,A股犹如过年!股市太火,炒股app都绷不住了
  11. 安卓增删改查用sql语句号码_详解Android中一些SQLite的增删改查操作
  12. Linux下卸载vmware
  13. 10分钟搞定webpack打包
  14. 【名词解释】7.UML类图
  15. 数据结构——拓扑排序算法理解和实现
  16. 在线分析丨相关性分析——RDA/CCA分析
  17. MySQL重做日志文件放在磁盘_重做日志文件
  18. Java进阶(七)Set系列集合、Map集合体系
  19. 晏殊几何学导读花间流风方程定义与引理
  20. 关于计算机的合成新英语词,计算机英语专业词汇的构词法

热门文章

  1. 关于计算机的知识作文,有关电脑的作文
  2. 推荐系统实践(八)UCG 利用ltf-idf方法
  3. 触控面板 开发_长信科技研发内核不断升级 成触控显示一体化领军企业
  4. 为什么装完计算机系统后进不去,电脑系统装完后为啥进不去?
  5. 1149:最长单词2
  6. matlab站点插值格点,基于xarray的气象场站点和格点插值
  7. 给的再多,不如懂我——Gif录制工具,这两个就够了
  8. MATLAB如何解决弹出路径不存在的问题
  9. 树莓派4B安装官方64位桌面系统
  10. 【科创人独家】PerfMa“寒泉子”李嘉鹏:成长和创业都要能人所不能,真强者何惧资本寒冬