又学会了一招,po模式

在学习po模式之前,先来认识一下什么是po模式,它的英文全称是page-object模式,即页面对象模式,顾名思义,就是把一个页面当作一个对象来对待。熟悉Python基础的应该都知道面向对象,实际上这种模式与面向对象的思想如出一辙,既然差不多,那么我们就来看看如何去使用这个模式,以简书登录页面为例,

假如登录页面只有上面这些元素,现在我们分析拆解一下这个页面;

一、它有哪些元素?

可以看到,页面中有:登录页签、注册页签、账号输入框、密码输入框、记住我复选框、登录遇到问题链接、登录按钮,它们都作为页面中的元素存在,在自动化的执行过程中,页面中的这些元素可能都需要被定位,因此,可以为登录对象添加各个元素定位的方法。

二、它有哪些方法?

既然是登录页面,那么最主要的方法就是登录了,当然,从页面中可以看出,它还可以切换到注册页签下,解决登录遇到问题的链接等。

 

上面我们已经对页面做了分解,下面就来对登录对象做具体的实现,直接贴上最主要部分的代码;

class LoginPage:
    def __init__(self, driver):
        self.driver = driver

    def login(self, username, password):
        """登录操作"""
        # 录入账号
        self.get_ele_input_account().send_keys(username)
        # 录入密码
        self.get_ele_input_password().send_keys(password)
        # 点击登录按钮
        self.get_ele_button_login().click()

    def get_ele_input_account(self):
        """获取账号输入框元素"""
        return self.driver.find_element_by_id('session_email_or_mobile_number')

    def get_ele_input_password(self):
        """获取密码输入框元素"""
        return self.driver.find_element_by_id('session_password')

    def get_ele_button_login(self):
        """获取登录按钮元素"""
        return self.driver.find_element_by_id('sign-in-form-submit-btn')

 

po模式有什么好处呢?

它将页面作为一个对象进行了封装,便于代码管理,将来如果页面产生了改动,只需要找到对应的页面对象,修改对应的元素定位即可;提高了代码的复用率,在其他地方可以快速引用这个页面的功能和元素定位;页面逻辑和测试用例逻辑拆分,我们的测试用例只需要调用封装好的方法,向里面传递参数,而不必关注方法的具体实现,大大提高测试用例的编写效率。

上面展示并非最终代码,还可以继续补充优化,这里只是点一个思路。

posted @ 2020-03-13 21:54  suanmiao  阅读(763)  评论(0)    收藏  举报