(相关资料图)
from playwright.sync_api import sync_playwrightwith 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对象那么使用PO模式我们怎么做呢?01.目录结构首先先创建一个项目,看下项目的目录结构:element目录:search_element:搜索页的定位元素page目录:封装的全部页面search_page:搜索页面result_image目录:截图的结果testcase目录:用例部分test_search:搜索功能的测试用例tools目录:工具包conftest:这里我们封装前置和后置代码02.element层element代码层先来封装search_element.py吧"""封装百度搜索框元素"""input_element = "#kw" # 输入框元素click_element = "#su" # 点击搜索元素03.tool层我们接着封装tools层conftest.py写什么呢,我们可以把初始化浏览器的操作封装下,还有关闭浏览器的操作,截图等操作封装成函数
""" 前置后置操作:初始化操作"""from playwright.sync_api import sync_playwrightclass 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层我们接着封装page层搜索页我们继承conftest,在search_page.py页中首先初始化定位元素、封装输入、点击、搜索操作,完善截图操作"""封装搜索页:初始化定位元素、重写输入操作、点击操作,截图操作"""from tools.conftest import SetupTeardownclass 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层我们接着封装testcase层,编写test_search.py代码这里我们直接写实际用例"""搜索页的测试用例"""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、总结PO模式看着非常麻烦,但是在较多页面使用时,是便于我们理解代码便于维护的,比如上边如果定位元素有变动,我们就去element层修改对应的定位元素,如果操作有变动,我们就去page层修改对应的页面操作。而我们只需要在对应的testcase用例层编写对应的用例即可,后续结合上pytest框架来管理用例会更方便 关键词:
全球快报:宝马首保做哪些项目_汽车首保做哪些项目? 汽车首保做的项目有:更换发动机的机油和机油滤清器;检查制动系统的运
每日速讯:喜临门:
公司会在定期报告中披露截止报告期末的股东户数 喜临门(603008)07月05日在投资者关系平台上答复了投资者关心的问题。
一袋过期鸭翅是否应予处罚3000元? 司法温度助推柔性执法 处罚金额调整为1000元|当前热闻 货架上有1袋过期鸭翅未及时处理,应该如何处罚?7月3日,记者从宜都法
主打旗舰品质,江铃福特新款轻客将重塑轻客市场新标杆 1965年,一款名为Transit的大尺寸多用途商用车在英国诞生,迅速火爆欧洲并风靡全球成
联通话费能充会员么 联通话费能买什么 播报 1、目前联通话费可以用来开通一些其他业务,例如迅雷视频、微博会员等
没有建行快贷的额度怎么办?学会五招轻松获得额度 建行快贷是建设银行推出的一款个人信用贷款产品,如果客户的资质通过了
片仔癀: 漳州片仔癀药业股份有限公司2022年年度权益分派实施公告 片仔癀:漳州片仔癀药业股份有限公司2022年年度权益分派实施公告