将网站源码下载下来如何使用,设计网站的一般过程,驻马店哪家做网站好,dedecms菜谱网站源码点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接#xff1a;https://ceshiren.com/t/topic/27167 一、page object 模式简介 马丁福勒个人博客 selenium 官网 1.1、传统 UI 自动化的问题
无法适应 UI 频繁变化无法清晰表达业务用例场景大量的样…点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接https://ceshiren.com/t/topic/27167 一、page object 模式简介 马丁福勒个人博客 selenium 官网 1.1、传统 UI 自动化的问题
无法适应 UI 频繁变化无法清晰表达业务用例场景大量的样板代码 driver/find/click
二、page object 设计原则
2.1、POM 模式的优势
降低 UI 变化导致的测试用例脆弱性问题让用例清晰明朗与具体实现无关
2.2、POM 建模原则 字段意义 不需要暴露页面内部的元素给外部不需要建模UI内的所有元素 方法意义 用公共的方法代表UI所提供的功能方法应该返回其他page object或者返回用于断言的数据同样的行为不同的结果可以建模为不同的方法不要在方法内断言
2.3、POM 使用方法
把元素信息和操作细节封装到 PageObject 类中根据业务逻辑在测试用例中链式调用
三、page object示例展示
3.1、搜索场景传统线性脚本(Python)
传统测试用例
from selenium import webdriver
from selenium.webdriver.common.by import Byclass TestSearch:def test_search(self):# 初始化浏览器self.driver webdriver.Chrome()self.driver.get(https://xueqiu.com/)self.driver.implicitly_wait(3)# 输入搜索关键词self.driver.find_element(By.NAME, q).send_keys(阿里巴巴-SW)# 点击搜索按钮self.driver.find_element(By.CSS_SELECTOR, i.search).click()# 获取搜索结果name self.driver.find_element(By.XPATH, //table//strong).text# 断言assert name 阿里巴巴-SW3.2、POM 脚本(Python)
股票页面 PageObject
from selenium import webdriver
from selenium.webdriver.common.by import Byclass SearchPage:__INPUT_SEARCH (By.NAME, q)__BUTTON_SEARCH (By.CSS_SELECTOR, i.search)__SPAN_STOCK (By.XPATH, //table//strong)def __init__(self):self.driver webdriver.Chrome()self.driver.implicitly_wait(3)self.driver.get(https://xueqiu.com/)def search_stock(self, stock_name: str):self.driver.find_element(*self.__INPUT_SEARCH).send_keys(stock_name)self.driver.find_element(*self.__BUTTON_SEARCH).click()name self.driver.find_element(By.XPATH, //table//strong).textreturn namePO 模式测试用例
from onSelenium.fei.page_objects.search_page import SearchPageclass TestSearch:def test_search(self):text SearchPage().search_stock(阿里巴巴-SW)# 断言assert 阿里巴巴-SW text