PO设计模式总结:
简介:
为UI页面写测试用例时(比如web页面,移动端页面),测试用例会存在大量元素和操作细节。
当UI发生变化时,测试用例也会跟着变化,PageObject很好的解决了这个问题!
使用UI自动化测试工具时(包括selenium,appium等),如果无统一模式进行规范,随着用例的增加会变得越来越难以维护
而PageObject让自动化脚本井井有序,将page大度维护并封装细节,可以使testcase更文件,不需要大量的改动
使用:
具体做法:把元素信息和操作细节封装到Page类中,在测试用例上调用Page对象
比如存在一个功能"选取相册标题",需要为之简历函数selectAblumWithTitle(),函数内部是操作细节findElementsWithClass('album')等;
PageObject的主要原则是提供一个简单的接口(或者函数),让调用者在页面上可以做任何的操作,点击页面元素,在输入框输入内容等待。
因此,如果要访问一个文本字段,page object应该有获取和返回字符串的方法。page object应该封装对数据的操作细节,比如查找元素和点击元素。
当页面改动时,应该只改变page类中的内容,不需改变调用它的地方。不需要为每隔UI页面都创建page类,应该只为页面中重要的元素创建page类
page object的目的是通过给页面建模,congress对应用程序的使用者变得更有意义。
PageObject原则:
简介:
PageObject的核心思想是六大原则,掌握六大原则才可以进行pageobject实战,这是精髓所在!
Selenium官方凝聚出六大原则,而后pageobject使用都将围绕此进行开展:
1. 公共的方法代表也买你提供的服务
2. 不要暴露细节
3. 不要把断言和操作细节混用
4. 方法可以return到新打开的页面
5. 不要把整页的内容都放到PO中
6. 相同的行为会产生不同的结果,可以封装不同结果
具体分析:
原则一:要封装页面中的功能或服务,比如点击页面元素,可以进入到新的页面,则可为这个服务封装方法"进入新页面"
原则二:封装细节,对外只提供方法名(或者接口)
原则三:封装的操作细节中不要使用断言,把断言放到单独的模块中,比如:testcase
原则四:点击一个按钮会开启新的页面,可以用return方法便是跳转,比如return MainPage()表示跳转到主页
原则五:只为页面中重要的元素进行PO设计,舍弃不重要的内容
原则六:一个动作可能产生不同结果,比如点击按钮后,可能成功,也可能失败,为两种结果封装两个方法:click_success和click_error
————————————————————————————————————————————————————————————————————