python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Playwright入门

Playwright快速上手指南(入门教程)

作者:行者AI

Playwright是由微软公司2020年初发布的新一代自动化测试工具,相较于目前最常用的Selenium,本文就详细的介绍一下快速上手指南,对新手有一定的帮助,感兴趣的可以了解一下

Playwright是由微软公司2020年初发布的新一代自动化测试工具,相较于目前最常用的Selenium,它仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作。作为针对 Python 语言纯自动化的工具,在回归测试中可更快的实现自动化。

1. 为什么选择Playwright

1.1 Playwright的优势

(1) Selenium需要通过WebDriver操作浏览器;Playwright通过开发者工具与浏览器交互,安装简洁,不需要安装各种Driver。

(2) Playwright几乎支持所有语言,且不依赖于各种Driver,通过调用内置浏览器所以启动速度更快。

(3) Selenium基于HTTP协议(单向通讯),Playwright基于Websocket(双向通讯)可自动获取浏览器实际情况。

(4) Playwright为自动等待。

1.2 已知局限性

(1) Playwright不支持旧版Microsoft Edge或IE11。支持新的Microsoft Edge(在Chromium上);所以对浏览器版本有硬性要求的项目不适用。

(2) 需要SSL证书进行访问的网站可能无法录制,该过程需要单独定位编写。

(3) 移动端测试是通过桌面浏览器来模拟移动设备(相当于自带模拟器),无法控制真机。

2. Playwright使用

2.1 安装

(1)安装Playwright依赖库(Playwright支持Async\Await语法,故需要Python3.7+)

pip install playwright

(2)安装Chromium、Firefox、WebKit等浏览器的驱动文件(内置浏览器)

python -m playwright install

2.2 自动录制

(1)命令行键入 --help 看到所有可后接选项

python -m playwright codegen --help

(2)从起始页为xingzheai.cn开始录制

python -m playwright codegen https://xingzheai.cn/

(3)打开xingzheai.cn,用Chromium驱动,将结果保存为my.py的python文件

python -m playwright codegen --target python -o 'my.py' -b chromium https://xingzheai.cn/

 -target:规定生成脚本的语言,有JS和Python两种,默认为Python
-b:指定浏览器驱动
-o:将录制的脚本保存到一个文件

2.3 定制化编写

(1)元素定位

By的8种定位方式,实际为4种

W3C标准规定的webDriver协议为5种定位方式

Playwright将选择器汇总为3种

(2)选择器规则

(3)元素常用操作

2.4 网络拦截(Mock接口),示例如下:

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('https://xingzheai.cn/')
        # 等待页面加载完全后截图
        page.waitForSelector("text=智能内容审核")
        page.screenshot(path=f'example-{browser_type.name}.png')
        browser.close()

2.6 异步执行,示例如下:

#同时进行三个浏览器操作
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('https://xingzheai.cn/')
          await page.waitForSelector("text=智能内容审核")
          await page.screenshot(path=f'example-{browser_type.name}.png')
          await browser.close()
         asyncio.get_event_loop().run_until_complete(main())

2.7 Pytest结合,示例如下:

安装: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()

2.8 移动端操作,示例如下:

目前支持模拟机型较少, 参照:仿真设备列表

from 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('https://xingzheai.cn/')
    page.click('text="智能内容审核"')
    # 截图
    # page.screenshot(path='colosseum-GalaxyS5.png')
    sleep(10)
    browser.close()

3. 总结

Playwright作为新一代自动化测试工具,相较于Selenium不论是易用性,还是实用性都得到了全方位的提升。做到了简约而不简单,相信使用该工具可以帮助我们提升做自动化的工作效率。

到此这篇关于Playwright快速上手指南(入门教程)的文章就介绍到这了,更多相关Playwright入门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文