PlayWright(十二)- PO模式
1、PO模式是什么?
2、以百度首页搜索为实例
from playwright.sync_api import sync_playwright with sync_playwright() as playwright: # 省略了start启动
browser = playwright.chromium.launch(headless=False, slow_mo=1000) # 设置了每步等待时间为3s
page = browser.new_page() # 打开一个页面 page.goto('https://www.baidu.com/') # 打开百度地址
page.fill('#kw', 'test') # 搜索框输入内容
page.click('#su') # 点击搜索
browser.close() # 省略了关闭playwright对象
01.目录结构
- search_element:搜索页的定位元素
- search_page:搜索页面
- test_search:搜索功能的测试用例
- conftest:这里我们封装前置和后置代码
02.element层
"""
封装百度搜索框元素
""" input_element = '#kw' # 输入框元素
click_element = '#su' # 点击搜索元素
03.tool层
"""
前置后置操作:初始化操作
""" from playwright.sync_api import sync_playwright class SetupTeardown:
"""
启动浏览器
""" def __init__(self):
self.p = sync_playwright().start() # 创建playwright对象
self.browser = self.p.chromium.launch(headless=False, slow_mo=1000) # 启动谷歌浏览器赋值给对象
self.page = self.browser.new_page() # 打开一个页面 """
关闭浏览器
""" def close(self):
self.browser.close() # 关闭浏览器对象
self.p.stop() # 关闭playwright对象释放资源 """
截图操作保存到result_image目录下
""" def screenshot(self, element, file_name):
self.page.locator(element).screenshot(path=f"../result_image/{file_name}.png")
04.page层
"""
封装搜索页:初始化定位元素、重写输入操作、点击操作,截图操作
"""
from tools.conftest import SetupTeardown class SearchPage(SetupTeardown):
"""
封装定位元素
""" def __init__(self):
super().__init__() # 调用基础页面的构造函数,完成浏览器启动和页面打开 """
去往搜索页
""" def navigate(self):
self.page.goto('https://www.baidu.com/') """
输入操作
""" def input_element(self, element, keyword):
self.page.fill(element, keyword) """
点击操作
""" def click_element(self, element):
self.page.click(element) """
截图搜索结果页
"""
05.testcase层
"""
搜索页的测试用例
""" from element.search_element import * # 导入搜索页的所有定位元素
from page.search_page import SearchPage # 导入搜索页对象 search_page = SearchPage() # 初始化搜索页对象
search_page.navigate() # 去往搜索页
search_page.input_element(input_search_element, 'playwright') # 搜索框输入内容
search_page.click_element(click_search_element) # 点击搜索
search_page.screenshot('result_search_page') # 截图保存
search_page.close() # 关闭浏览器
3、总结
PlayWright(十二)- PO模式的更多相关文章
- Java设计模式偷跑系列(十二)组合模式建模和实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39828653 组合模式(Composite):组合模式有时又叫部分-总体模式.将对象组合成 ...
- C#设计模式之二十二访问者模式(Visitor Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第九个模式,该模式是[访问者模式],英文名称是:Visitor Pattern.如果按老规矩,先从名称上来看看这个模式,我根本不能获 ...
- C#设计模式之二十二备忘录模式(Memeto Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第十个模式,该模式是[备忘录模式],英文名称是:Memento Pattern.按老规矩,先从名称上来看看这个模式,个人的最初理解就 ...
- C#设计模式之二十二备忘录模式(Memento Pattern)【行为型】
一.引言 今天我们开始讲“行为型”设计模式的第十个模式,该模式是[备忘录模式],英文名称是:Memento Pattern.按老规矩,先从名称上来看看这个模式,个人的最初理解就是对某个对象的状态进行保 ...
- C#设计模式之十二代理模式(Proxy Pattern)【结构型】
一.引言 今天我们要讲[结构型]设计模式的第七个模式,也是“结构型”设计模式中的最后一个模式,该模式是[代理模式],英文名称是:Proxy Pattern.还是老套路,先从名字上来看看.“代理”可以理 ...
- JavaScript学习笔记(十二) 回调模式(Callback Pattern)
函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode(),然后在某个时间点,writeCode()有可能执行(调用)intr ...
- JavaWeb学习记录(二十二)——模式字符串与占位符
一.Java代码案例 @Test public void test10(){ int planet=7; String event="a disturban ...
- Java进阶篇设计模式之十二 ---- 备忘录模式和状态模式
前言 在上一篇中我们学习了行为型模式的策略模式(Strategy Pattern)和模板模式(Template Pattern).本篇则来学习下行为型模式的两个模式,备忘录模式(Memento Pat ...
- Java设计模式之十二 ---- 备忘录模式和状态模式
前言 在上一篇中我们学习了行为型模式的策略模式(Strategy Pattern)和模板模式(Template Pattern).本篇则来学习下行为型模式的两个模式,备忘录模式(Memento Pat ...
- Java设计模式(十二) 策略模式
原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...
随机推荐
- 单元测试、文档测试、读写文件、StringIO和BytesIO
1.单元测试就是为了测试程序执行的正确性 2.编写单元测试时,需要编写一个单元测试类,继承unittest TestCase类 3.单元测试最常用的断言是assert,断言期望抛出指定的异常 4.运行 ...
- P6185 [NOI Online #1 提高组] 序列
给定两个长度为n的序列\(A\),\(B\). 有m个可用的操作\((t_i,u_i,v_i)\). \(t\)代表操作类型. 当\(t=1\)时,表示能够将\(A_{u_i}\)和\(A_{v_i} ...
- 巧用Nginx配置解决跨域问题
页面nginx配置 1,前端页面放在域名根目录,比如,http://www.xuecheng.com/ ,对应的nginx配置: #门户 location / { alias D:/Z_lhy/Spr ...
- Ubuntu系统Flameshot使用问题
Ubuntu系统Flameshot使用问题 系统:Ubuntu22.04 问题:使用Flameshot,每次都会先截取整个屏幕,提示需要先分享,再使用Flameshot的功能 安装Flameshot ...
- SQL优化(一)
1.什么是SQL优化 SQL语句的优化是将性能低下的SQL语句转换成目的相同但是性能优异的SQL语句. 2.为什么需要学习SQL优化 SQL语句是对数据库进行操作的惟一途径,对数据库系统的性能起着决定 ...
- Redis的缓存穿透+解决方案
1.缓存穿透现象介绍 缓存穿透 :缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库. 常见的解决方案有两种: 缓存空对象 优点:实现简单,维护方便 ...
- [人脸活体检测] 论文:Aurora Guard- Real-Time Face Anti-Spoofing via Light Reflection
Aurora Guard- Real-Time Face Anti-Spoofing via Light Reflection 论文简介 该论文提出的方法已经部署到百万台终端,整篇文章底气十足.作者设 ...
- CQOI2013vp记
新Nim游戏 因为第一次操作与其它操作不同,考虑拿出来单独做,剩下的操作就变成了 Nim游戏 了. 回忆一下 Nim游戏 先手必胜的条件是什么,是所有数的异或和不为 \(0\),那么这题就转化为求原集 ...
- Docker快速部署Hadoop环境
文章目录 安装环境 安装过程 拉取镜像 在Docker中创建网络,方便通信 创建Master节点 创建slave1和slave2节点 分别进入三个容器修改hosts文件 在Master执行集群初始化 ...
- Prism Sample 19-NavigationParticipation
Navigation Participation,不知翻译方法,意思是对导航过程的参与,触发事件,类似离开导航目标和进入导航的回调 在VM中,增加一个接口 ,然后实现导航事件 public class ...