PO模型---代码实现

Selenium的Page Object Model(PO模型)是一种用于Web自动化测试的结构化设计模式。它将页面元素和操作封装在独立的Page类中,提高了代码的可维护性和可读性。BasePage类包含通用方法,如元素定位、点击、输入等,而每个具体的Page模块继承BasePage并实现特定业务逻辑。在单元测试中,通过导入相应的Page模块,可以轻松执行测试用例,实现业务与对象的分离。这种模式有利于代码组织和后期维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PO模型

po模型属于在selenium中进行了再次封装,
1:将公共的方法放在basepage类中,比如获取元素,点击按钮,填充数据,表单切换,窗口切换等
2:将每个界面的业务放在对应的page模块中,继承basepage类,使用什么操作只需要调用父类的方法即可实现
3:在单元测试中,导入对应的模块,添加到测试用例中,就会执行该对应page页的操作

优点

使代码和业务分离,各个界面的操作放在对应的page模块中,后期便于代码的维护

创建BasePage(基类),用于存储公共方法

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 = driver
        self.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):
        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])

创建Page业务模块(每个功能创建一个Page页)

继承父类BasePage类,根据业务逻辑,调用父类的方法
在这里插入图片描述

创建单元测试用例模块

在这里插入图片描述
使用unittest+selenium用po模型是业务和对象分离

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值