【用POM设计模式重构项目】设计BasePage类:设计基类,提高项目的代码重用性

前言

一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210423。

 

10、用POM设计模式重构项目

  • POM设计模式简介
  • 设计BasePage类
  • 设计项目页面对应的PO类
  • 设计项目测试用例
  • 综合项目测试

设计BasePage类

创建一个basePage.py文件存放一些公共的定位方法,方便后续调用

# 就是创建一个基类让其他类来调用
from time import sleep

from selenium.webdriver.common.by import By


class BasePage(object):
    def __init__(self,driver):# 这个参数就是为了后面传  就不需要import webdriver
        self.driver = driver

    # 获取定位
    def get_element(self,*loc):     # 传个定位器为了后面传参数用
        return self.driver.find_element(*loc)
    # 传文本内容
    def input_text(self,text,*loc): # 多参的情况下需要把*loc放到后面
        self.get_element(*loc).send_keys(text) # 这样就能把值输入进去

    # 点击的方法
    def click(self,*loc):
        self.driver.find_element(*loc).click()

    # 获得页面的标题
    def get_title(self):
        return self.driver.title
    # 可以有很多方法  用到就可以列到这个基础类里

# 接下来就测一下调用上面的方法
class BaiduPage(BasePage):  # 继承
    def __init__(self,driver):
        BasePage.__init__(self,driver)  # 把BasePage中的init继承过来
        self.driver.get('https://www.baidu.com')

    def test_search(self):
        loc = (By.ID,'kw')
        loc2 = (By.ID,'su')
        # 调用input_text方法
        self.input_text('小慌慌的博客',*loc)
        # 调用点击函数
        self.click(*loc2)

if __name__ == '__main__':
    from selenium import webdriver
    driver = webdriver.Chrome()
    baiduPage = BaiduPage(driver) # 初始化
    baiduPage.test_search()
    sleep(3)
    driver.quit()


这样就会减少后面的工作强度。

 

“永不放弃,总有希望在前面等待!”送给自己,也送给正在阅读文章的博友们~

### 回答1: 好的,我会尽力帮助您。 首先,我们需要了解PageObject设计模式的基本思想。PageObject设计模式是一种用于描述Web应用程序用户界面的方法。它通过分离用户界面的元素和操作来使测试代码更加可维护和可读。 在Selenium中使用PageObject设计模式,我们需要创建一个,该描述了特定页面的元素和操作。这个通常被称为“PageObject”。 例如,假设我们正在测试一个在线商店的登录页面。我们可以创建一个名为“LoginPage”的,该描述了登录页面上的所有元素,如用户名输入框、密码输入框和登录按钮。我们还可以在该中定义方法来描述如何使用这些元素来执行操作,如输入用户名和密码并点击登录按钮。 下面是一个使用PageObject设计模式的简单示例,该示例描述了如何使用Selenium来测试登录页面: ```python from selenium import webdriver class LoginPage: def __init__(self, driver): self.driver = driver self.url = "http://www.example.com/login" self.username_input = self.driver.find_element_by_id("username") self.password_input = self.driver.find_element_by_id("password") self.login_button = self.driver.find_element_by ### 回答2: Page Object模式是一个常用的设计模式,用于改进Selenium项目的可维护和可扩展。基于Page Object模式的Selenium项目分为三个主要部分:测试用例、页面对象和测试执行。 首先,我们需要创建测试用例。测试用例是描述需要执行的操作和验证点的脚本。在编写测试用例时,我们应该尽可能地让测试用例保持简洁、可读高,并且降低测试用例之间的耦合度。 接下来,我们需要创建页面对象。页面对象是Selenium页面的抽象表示,包含页面的各种元素和对应的操作方法。每个页面对象应该对应应用程序的一个页面或一个功能模块。 然后,我们将测试用例和页面对象结合起来进行测试执行。在测试执行过程中,我们通过实例化页面对象,调用其方法来操作页面元素和执行各种操作。这样的测试执行方式使得代码复用更加容易,同时使得代码更加可读和可维护。 在项目中,我们可以使用Selenium WebDriver来驱动浏览器,通过定位元素和操作元素来实现各种操作。使用Java语言编写测试用例和页面对象可以更好地与Selenium WebDriver集成。 通过使用基于Page Object设计模式Selenium项目,我们可以降低测试用例的复杂度,提高测试脚本的可读和可维护。同时,通过封装页面对象,我们可以减少测试用例的重复代码提高代码复用,并且便于测试脚本的扩展和维护。 总结起来,基于Page Object设计模式Selenium项目能够提高代码的可读、可维护和可扩展,使得测试执行更加灵活和高效。 ### 回答3: 基于Page Object设计模式Selenium项目可以用于自动化测试Web应用程序。下面我给你一个简单的示例: 1. 首先,创建一个新的Java项目,然后添加Selenium WebDriver的依赖项。 2. 创建一个名为"LoginPage"的来表示登录页面,并继承自"BasePage"。LoginPage应该包含登录页面的元素定位和操作方法,如输入用户名、输入密码、点击登录按钮等。 3. 创建一个名为"HomePage"的来表示登录成功后的首页,并同样继承自"BasePage"。HomePage应该包含首页的元素定位和操作方法,如检查欢迎信息、点击注销按钮等。 4. 创建一个名为"BasePage"的基类,其中封装了Selenium WebDriver的初始化和公共操作方法。在BasePage中,你可以初始化WebDriver并定义一些常用的操作方法,如点击、输入等。 5. 创建一个名为"LoginTest"的来执行登录测试。在LoginTest中,你可以创建LoginPage对象并调用其中的方法,如输入用户名和密码,然后点击登录按钮。接着,你可以创建HomePage对象并验证欢迎信息是否正确。如果成功登录,运行测试应该会通过。 总结:基于Page Object设计模式Selenium项目可以帮助我们实现更高效和可维护的自动化测试。通过将页面对象和操作方法封装到独立的中,我们可以更好地组织和管理测试代码,并提高测试脚本的重用。当应用程序发生变化时,我们只需要更新相应的页面对象,而不用修改每个测试用例。这样的设计模式能够提高测试代码的可读、可维护和健壮
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小慌慌

感谢博友的鼓励,快乐分享~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值