1.简介
上一篇宏哥已经将Python Playwright的环境搭建好了,而且也简单的演示了一下三款浏览器的启动和关闭,是不是很简单啊。今天主要是把一篇的中的代码进行一次详细的注释,然后说一下playwright的API和其他相关知识点。那么首先将上一篇中的代码进行一下详细的解释。
2.代码解释
2.1创建浏览器对象
代码语言:javascript复制 '''默认为无头浏览器方式启动 '''
browser = p.webkit.launch(headless=False)
2.2创建page对象
一般来说,一个page对应一个浏览器选项卡,而Page对象的作用在于和页面的内容进行交互,以及导航和加载新的页面。这点和selenium有点像,也可以说是比selenium划分的更加细致精确。
代码语言:javascript复制page = browser.new_page()
2.3其他
其他的是一些选择器和操作方法,在后续的文章中宏哥都会一一的介绍到。
3.playwright的API
Playwright支持同步和异步两种API,使用异步API需要导入asyncio库,它是一个可以用来实现Python协程的库,更详细介绍可参考Python协程 。我们可以根据自己的偏好选择适合的模式。
3.1同步与异步模式原理
同步操作方式:在代码执行时,程序会阻塞等待每个操作执行的结果,直到该操作执行结束才能继续执行后面的代码。同步代码容易理解和编写,但如果在网络请求等 I/O 操作时会造成大量的等待时间,影响程序的执行效率。
异步操作方式:在代码执行时,当遇到需要等待操作执行的时候,程序不会被阻塞,而是继续执行其他的代码。当该操作执行的结果返回时,程序会自动跳回去接着执行之前被暂停的代码。异步操作虽然需要一定的学习成本,但可以提升程序的执行效率。
3.1.1同步模式
· 直接顺序执行测试逻辑,直到完成。
· 使用上下文管理器或启动/关闭方法控制浏览器生命周期。
· 简单易用,适合同步测试场景。
· 但无法实现异步或重叠的测试逻辑。
3.1.2异步模式
· 利用asyncio模块以异步非阻塞方式执行测试逻辑。
· 浏览器启动/关闭和大多数Playwright API也是异步的,需要await。
· 可以实现复杂的异步或重叠测试逻辑。
· 但较难调试,有一定学习成本。
3.2同步和异步的概念
同步:发送一个请求,等待返回,然后再发送下一个请求。
异步:发送一个请求,不等待返回,随时可以再发送下一个请求。
3.3同步和异步实践
3.3.1测试用例
宏哥这里假设一共有2条测试用例,用例1步骤如下: 1)chrome浏览器打开百度 2)搜索框输入“test” 3)点击百度一下搜索 4)点击搜索结果的第2页 用例2步骤: 1)chrome浏览器打开搜狗搜索 2)搜索框输入“test” 3)点击搜狗搜索 4)点击搜索结果的第2页
3.3.2同步
这里我们使用sync_playwright上下文管理器同步启动Playwright,然后编写同步测试逻辑。
3.3.2.1参考代码
根据上述测试用例编写自动化测试脚本代码如下:
代码语言:javascript复制# coding=utf-8