Python+Playwright自动化入门

一、Playwright介绍

Playwright 是专门为满足端到端测试的需求而创建的。Playwright 支持所有现代渲染引擎,包括 Chromium、WebKit 和 Firefox。在 Windows、Linux 和 macOS 上进行测试,在本地或在 CI 上进行测试,无头或使用本机移动仿真。

参考:

  • 中文版:Playwright 入门介绍和使用指南_playwright中文手册-CSDN博客

  • 英文版:Installation | Playwright Python(官方文档)

  • 注:Python版本需要3.8及以上

    二、使用准备

    Playwright安装:

    step1、以管理员身份运行cmd

    step2、执行安装命令:

    pip install playwright

    step3、检查安装:

    在Python安装路径Script文件夹下:C:\Python312\Scripts,可以看到playwright.exe

    在在Python安装路径site-packages文件夹下:C:\Python312\Lib\site-packages,可以看到playwright包

    浏览器安装

    step1、执行安装命令:

    # 下载Chromium、Firefox和WebKit的最新版本
    playwright install
    # 下载单个浏览器
    playwright install chromium
    playwright install firefox
    playwright install webKit

    step2、检查安装:

    保存路径:C:\Users\<YourUsername>\AppData\Local\ms-playwright

    三、入门实践

    入门示范代码:

    # 导入非异步执行的模块
    from playwright.sync_api import sync_playwright
    
    # 启动非异步服务
    p = sync_playwright().start()
    
    # 实例化chromium浏览器,"headless=False"参数表示打开展示浏览器窗口
    browser = p.chromium.launch(headless=False)
    
    # 新建标签页
    page = browser.new_page()
    
    # 打开指定网址
    page.goto('https://www.baidu.com')
    
    # 打印标签页的title
    print(page.title())
    
    # 输入搜索关键字
    page.locator('#kw').fill('bigseller')
    
    # 点击搜索按钮
    page.locator('#su').click()
    
    # 等待搜索内容加载
    page.wait_for_timeout(2000)
    
    # 获取搜索内容
    lcs = page.locator('//a[@data-showurl-highlight="true"]').all()
    
    # 打印搜索内容
    print(lcs)
    for i in lcs:
        print(i.inner_text())
    
    # 关闭浏览器
    browser.close()
    
    # 停止playwright服务
    p.stop()

    执行效果:

    20240504124721_rec_

    元素定位

    page.locator() # 通过CSS选择器或者Xpath路径定位
    page.get_by_text() # 通过文本内容定位
    page.get_by_role() # 通过元素角色定位
    page.get_by_placeholder() # 通过用户视觉定位
    page.get_by_label() # 通过元素关联的 label 定位
    page.get_by_alt_text() # 通过元素关联的 alt属性 定位
    page.get_by_title() # 根据元素的 title 定位

    拓展:Playwright常用元素定位方法https://mp.csdn.net/mp_blog/creation/success/143329763

    四、录入转脚本

    启动录入工具:

    执行命令,自动打开工具和浏览器:

    playwright codegen
    playwright codegen wwww.baidu.com

    录入操作生成代码:

    录入行为:

    20240504153525_rec_

    粘贴代码:

    import re
    from playwright.sync_api import Playwright, sync_playwright, expect
    
    
    def run(playwright: Playwright) -> None:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        page.goto("https://www.baidu.com/")
        page.locator("#kw").click()
        page.locator("#kw").fill("bigseller")
        page.locator("#kw").press("Enter")
    
        # ---------------------
        context.close()
        browser.close()
    
    
    with sync_playwright() as playwright:
        run(playwright)

    五、跟踪功能

    跟踪功能里面,可以看到每一个执行节点的执行信息,包括有:执行时长,执行前中后的截图,参数等,如果执行存在问题,可以通过这个方法去回溯定位

    代码加入跟踪功能:

    # 导入非异步执行的模块
    from playwright.sync_api import sync_playwright
    
    # 启动非异步服务
    p = sync_playwright().start()
    
    # 实例化chromium浏览器,"headless=False"参数表示打开展示浏览器窗口
    browser = p.chromium.launch(headless=False)
    
    # 创建BrowserContext对象
    context = browser.new_context()
    
    # 启动跟踪功能
    context.tracing.start(snapshots=True,sources=True,screenshots=True)
    
    # 新建标签页
    page = context.new_page()
    
    # 打开指定网址
    page.goto('https://www.baidu.com')
    
    # 打印标签页的title
    print(page.title())
    
    # 输入搜索关键字
    page.locator('#kw').fill('bigseller')
    
    # 点击搜索按钮
    page.locator('#su').click()
    
    # 等待搜索内容加载
    page.wait_for_timeout(2000)
    
    # 获取搜索内容
    lcs = page.locator('//a[@data-showurl-highlight="true"]').all()
    
    # 打印搜索内容
    print(lcs)
    for i in lcs:
        print(i.inner_text())
    
    # 结束跟踪
    context.tracing.stop(path='trace.zip')
    
    # 关闭浏览器
    browser.close()
    
    # 停止playwright服务
    p.stop()

    执行脚本生成跟踪文件:

    20240504154946_rec_

    解析跟踪文件:

    用于用例执行问题的排查

    打开“trace.playwright.dev”网址,将文件拖入进去:

    20240504155352_rec_

    通过命令行的方式解析跟踪文件:

    playwright show-trace trace.zip

    作者:HAMYHF

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python+Playwright自动化入门

    发表回复