简单的线程池(四)
988 2023-04-03 03:48:50
Playwright是由微软公司2020年初发布的新一代自动化测试工具,相较于目前最常用的Selenium,它仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作。作为针对 Python 语言纯自动化的工具,在回归测试中可更快的实现自动化。
(1) Selenium需要通过WebDriver操作浏览器;Playwright通过开发者工具与浏览器交互,安装简洁,不需要安装各种Driver。
(2) Playwright几乎支持所有语言,且不依赖于各种Driver,通过调用内置浏览器所以启动速度更快。
(3) Selenium基于HTTP协议(单向通讯),Playwright基于Websocket(双向通讯)可自动获取浏览器实际情况。
(4) Playwright为自动等待。
(1) Playwright不支持旧版Microsoft Edge或IE11。支持新的Microsoft Edge(在Chromium上);所以对浏览器版本有硬性要求的项目不适用。
(2) 需要SSL证书进行访问的网站可能无法录制,该过程需要单独定位编写。
(3) 移动端测试是通过桌面浏览器来模拟移动设备(相当于自带模拟器),无法控制真机。
(1)安装Playwright依赖库(Playwright支持Async\Await语法,故需要Python3.7+)
?1pip install playwright
(2)安装Chromium、Firefox、WebKit等浏览器的驱动文件(内置浏览器)
?1python
-
m playwright install
python
-
m playwright codegen
-
-
help
(2)从起始页为xingzheai.cn开始录制
?1python
-
m playwright codegen https:
/
/
xingzheai.cn
/
(3)打开xingzheai.cn,用Chromium驱动,将结果保存为my.py的python文件
?1python
-
m playwright codegen
-
-
target python
-
o
'my.py'
-
b chromium https:
/
/
xingzheai.cn
/
-target:规定生成脚本的语言,有JS和Python两种,默认为Python
-b:指定浏览器驱动
-o:将录制的脚本保存到一个文件
(1)元素定位
By的8种定位方式,实际为4种
W3C标准规定的webDriver协议为5种定位方式
Playwright将选择器汇总为3种
(2)选择器规则
(3)元素常用操作
page
=
context.newPage()
def
Whether_intercept()
-
>
bool
:
return
True
#进行拦截
# return False #不进行拦截
def
handler(route:Route):
print
(route.request.url)
#正常访问
# route.continue_()
#拒绝访问
# route.abort("网络拦截")
# 重定向到非目标地址
route.fulfill(
status
=
302
,
headers
=
{
'Location'
:
"https://xingzheai.cn/"
}
)
page.route(Whether_intercept,handler)
2.5 同步执行,示例如下:
#依次打开三个浏览器,前往行者官网,截图后退出。
from
playwright
import
sync_playwright with sync_playwright() as p:
for
browser_type
in
[p.chromium, p.firefox, p.webkit]:
# 指定为有头模式,Ture为无头模式
browser
=
browser_type.launch(headless
=
False
)
page
=
browser.newPage()
page.goto(
'/d/know/2023030410/kw1ni5vebwi'
)
browser.close()
#同时进行三个浏览器操作
import
asyncio
from
playwright
import
async_playwright
async
def
main():
async with async_playwright() as p:
for
browser_type
in
[p.chromium, p.firefox, p.webkit]:
browser
=
await browser_type.launch()
page
=
await browser.newPage()
await page.goto(
'/d/know/2023030410/2xyejfgpzc0.webp'
)
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
安装:pip install pytest-playwright
def
test_playwright(page):
page.goto(
"https://xingzheai.cn/"
)
with page.expect_popup() as popup_info:
page.click(
'text="智能内容审核"'
)
assert
"智能内容审核"
=
=
element.textContent()
目前支持模拟机型较少, 参照:仿真设备列表
?12345678910111213from
time
import
sleep
from
playwright
import
sync_playwright
with sync_playwright() as p:
GalaxyS5
=
p.devices[
'Galaxy S5'
]
browser
=
p.chromium.launch(headless
=
False
)
context
=
browser.newContext(
*
*
GalaxyS5)
page
=
context.newPage()
page.goto(
'/d/know/2023030410/2iuh1f2db2s')
sleep(
10
)
browser.close()
Playwright作为新一代自动化测试工具,相较于Selenium不论是易用性,还是实用性都得到了全方位的提升。做到了简约而不简单,相信使用该工具可以帮助我们提升做自动化的工作效率。
到此这篇关于Playwright快速上手指南(入门教程)的文章就介绍到这了,更多相关Playwright入门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章: