又学会了一招,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模式有什么好处呢?
它将页面作为一个对象进行了封装,便于代码管理,将来如果页面产生了改动,只需要找到对应的页面对象,修改对应的元素定位即可;提高了代码的复用率,在其他地方可以快速引用这个页面的功能和元素定位;页面逻辑和测试用例逻辑拆分,我们的测试用例只需要调用封装好的方法,向里面传递参数,而不必关注方法的具体实现,大大提高测试用例的编写效率。
上面展示并非最终代码,还可以继续补充优化,这里只是点一个思路。

浙公网安备 33010602011771号