UI自动化_简单的PO模式

WEB自动化_PO模式设计原理和设计规范

1、什么是po模式?

1、全称:Page Object Model
2、是一种设计思想,应用在 selenium web 自动化上。
3、把元素封装与业务操作流程分开,从而提供可维护性。

2、非po模式特点?

1、面向过程,代码可读性差。
2、易读性差,满屏都是 find_element,代码显得杂乱无章。
3、可复用性差,没有公共方法,很难复用。
4、可维护性差,一旦元素变化,需要花大量的时间维护脚本。

3、po模式的好处?

1、面向对象。
2、元素有变化,只需要维护每一个page就可以了。
3、测试步骤变化,只需要维护对应的testCase。
4、可读性/复用性/维护性更好,更易读。

案例:

# 公共元素
ChromePath = r"D:\chromedriver\chromedriver_win32-V103.0.5060.53\chromedriver.exe"
url = "http://127.0.0.1:8011/login"


from selenium import webdriver

# 创建 driver 对象
driver = webdriver.Chrome(ChromePath)


# 登录页面类封装
class LoginPage:
    def __init__(self, url, driver):
        self.driver = driver
        # 隐式等待
        self.driver.implicitly_wait(5)
        # 最大化窗口
        self.driver.maximize_window()
        # 访问网址
        self.driver.get(url)

        # 定位到用户名输入框
        self.usernameInputBox = self.driver.find_element_by_name("username")
        # 定位到密码输入框
        self.passwordInputBox = self.driver.find_element_by_name("password")
        # 定位到登录按钮
        self.loginButon = self.driver.find_element_by_css_selector("button")


# 登录页面动作类封装,抽离出页面动作类,继承对应的页面类LoginPage。
class LoginPageAction(LoginPage):
    # 登录功能
    def login(self):
        self.usernameInputBox.send_keys("ymnl")
        self.passwordInputBox.send_keys("123456")
        self.loginButon.click()


lpa = LoginPageAction(url, driver)
lpa.login()



class HomePage:
    def __init__(self, url, driver):
        self.driver = driver

    # 我的主页
    def myPageBox(self):
        return self.driver.find_element_by_css_selector(
            "[class=\"nav nav-pills nav-stacked custom-nav js-left-nav\"] > li:nth-child(1)")

    # 项目管理
    def prM(self):
        return self.driver.find_element_by_css_selector(
            "[class=\"nav nav-pills nav-stacked custom-nav js-left-nav\"] > li:nth-child(2)")

    # 功能:依次点击 我的主页、项目管理、我的主页
    def foo(self):
        """
        1、点击之后,页面刷新了。
        2、每一次操作元素时,都是通过函数重新寻找的。
        :return:
        """
        self.myPageBox().click()
        self.prM().click()
        self.myPageBox().click()


hp = HomePage("", driver)
hp.foo()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卢同学.

但行好事 莫问前程

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

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

打赏作者

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

抵扣说明:

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

余额充值