标题
web 企业微信自动化实战
课程价值
- 了解 PageObject 原理及六大原则
- 掌握PageObject 封装思想
- PageObject结合UI自动化测试实战
大纲
- PageObject 原理及六大原则
- 企业微信建模
- BasePage的封装
- 添加联系人测试用例
时长
120分钟
课堂源码链接
GitHub - ceshiren/HogwartsLG7: 霍格沃兹测试学院拉勾名企直推营第七期 https://ceshiren.com
课前准备
chrome debug登录
实战内容
为什么需要PageObject设计模式
想象一下,一个添加成员用例需要怎么做:
- 登录_login页面
- 登录后进入首页_main页面
- 点击添加成员_main页面
- 填写添加信息_add_member页面
- 点击保存_add_member页面
- 返回通讯录_add_membe页面
- 加断言做验证_contact页面
传统的web测试用例
def test_add_member(self):
self.driver.get(“https://work.weixin.qq.com/wework_admin/frame#index")
element_locator = (By.LINK_TEXT, “添加成员")
WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(element_locator))
self.driver.find_element(*element_locator).click()
self.driver.find_element(By.NAME, 'username').send_keys("abc")
self.driver.find_element(By.NAME, 'english_name').send_keys("abc")
self.driver.find_element(By.NAME, "acctid").send_keys("abc")
self.driver.find_element(By.CSS_SELECTOR, '.ww_telInput_zipCode_input input').click()
self.driver.find_element(By.CSS_SELECTOR, 'li[data-value="853"]').click()
assert...
如果需要多添加一个步骤,从首页->通讯录->添加成员应该怎么改
- 登录_login页面
- 进入首页_main页面
- 点击通讯录_main页面
- 点击添加成员_contact页面
- 填写添加信息_add_member页面
- 点击保存_add_member页面
- 返回通讯录_add_member页面
- 加断言做验证_contact页面
对应的自动化测试代码
def test_add_member(self):
self.driver.get(“https://work.weixin.qq.com/wework_admin/frame#index")
element_locator = (By.LINK_TEXT, “添加成员")
WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(element_locator))
self.driver.find_element(*element_locator).click()
self.driver.find_element(By.NAME, 'username').send_keys("abc")
self.driver.find_element(By.NAME, 'english_name').send_keys("abc")
self.driver.find_element(By.NAME, "acctid").send_keys("abc")
self.driver.find_element(By.CSS_SELECTOR, '.ww_telInput_zipCode_input input').click()
self.driver.find_element(By.CSS_SELECTOR, 'li[data-value="853"]').click()
assert...
传统UI自动化测试用例的问题
- 无法适应UI变化,UI变化会导致大量的case需要修改
- 无法清晰表达业务用例场景
- 大量的样板代码driver find click
PageObject原理以及六大原则
参考资料与官网链接
马丁福勒个人博客
selenium 官方网站:
/documentation/test_practices/encouraged/page_object_models/
PO设计思想
PO六大原则
一定要活学活用,不要死搬硬套
原则解读
- 方法意义
- 用公共方法代表UI所提供的功能
- 方法应该返回其他的PageObject或者返回用于断言的数据
- 同样的行为不同的结果可以建模为不同的方法
- 不要在方法内加断言
- 字段意义
- 不要暴露页面内部的元素给外部
- 不需要建模UI内的所有元素
实战练习思路
实战练习-企业微信建模
在线绘制plantuml网站
添加成员时序图
@startuml
participant 注册页面 as register
participant 登录页面 as login
participant 企业微信主页面 as main
participant 通讯录页面 as contact
participant 添加成员页面 as add_member
@enduml