当前位置:

首页 > 编程开发 > 探索微软出品的Python入门利器

探索微软出品的Python入门利器

大家好,我是菜鸟哥!最近逛G网,发现微软开源了一个项目叫「playwright-python」,作为一个兴起项目。Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit浏览器,连代码都不用写,就能实现自动化功能。虽然测试工具selenium具有完备的文档,但是其学习成本让一众小白们望而却步,对比之下playwright-python简直是小白们的神器。Playwright真的适用于Python吗?答案是肯定

本文目录

    探索微软出品的Python入门利器

    大家好,我是菜鸟哥!

    最近逛G网,发现微软开源了一个项目叫「playwright-python」,作为一个兴起项目。

    探索微软出品的Python入门利器

    Playwright 是针对 Python 语言的纯自动化工具,它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,连代码都不用写,就能实现自动化功能。

    虽然测试工具 selenium 具有完备的文档,但是其学习成本让一众小白们望而却步,对比之下 playwright-python 简直是小白们的神器。

    Playwright真的适用于Python吗?答案是肯定的,微软对于适用于Python的Playwright已准备就绪。可能会发生API重大更改。但大概率是这种情况不会发生,微软还表示仅在他们知道它可以改善您使用新库的体验时,才会可能这样做。

    不过微软也提醒尚不支持特定于供应商的API的某些极端情况,例如收集Chromium跟踪,覆盖率报告等。

    1、Playwright介绍

    Playwright是一个强大的Python库,仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。

    Playwright提供的自动化技术是绿色的、功能强大、可靠且快速,支持Linux、Mac以及Windows操作系统。

    还有朋友这么夸:这个项目作为针对 Python 语言纯自动化的工具,解放了代码,实现了自动化功能,我们来看看怎么用它吧。

    2、Playwright使用

    安装

    Playwright的安装非常简单,两步解决。

    安装playwright库
    pip install playwright
    安装浏览器驱动文件(安装过程稍微有点慢)
    python -m playwright install

    上面两个pip操作分别安装:

    • 安装Playwright依赖库,需要Python3.7+
    • 安装Chromium、Firefox、WebKit等浏览器的驱动文件

    录制

    使用Playwright无需写一行代码,我们只需手动操作浏览器,它会录制我们的操作,然后自动生成代码脚本。

    下面就是录制的命令codegen,仅仅一行。

    命令行键入 --help 可看到所有选项
    python -m playwright codegen

    codegen的用法可以使用--help查看,如果简单使用就是直接在命令后面加上url链接,如果有其他需要可以添加options。

    python -m playwright codegen --help
    Usage: index codegen [options] [url]
    open page and generate code for user actions
    Options:
     -o, --output saves the generated script to a file
     --target  language to use, one of javascript, python, python-async, csharp (default: "python")
     -h, --helpdisplay help for command
    Examples:
     $ codegen
     $ codegen --target=python
     $ -b webkit codegen https://example.com

    options含义:

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

    比如,我要在baidu.com搜索,用chromium驱动,将结果保存为my.py的python文件。

    python -m playwright codegen --target python -o 'my.py' -b chromium https://www.baidu.com

    命令行输入后会自动打开浏览器,然后可以看见在浏览器上的一举一动都会被自动翻译成代码,如下所示。

    探索微软出品的Python入门利器

    结束后自动关闭浏览器,保存生成的自动化脚本到py文件。

    from playwright import sync_playwright
    def run(playwright):
    browser = playwright.chromium.launch(headless=False)
    context = browser.newContext()
    # Open new page
    page = context.newPage()
    page.goto("https://www.baidu.com/")
    page.click("input[name="wd"]")
    page.fill("input[name="wd"]", "jingdong")
    page.click("text="京东"")
    # Click //a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']
    with page.expect_navigation():
     with page.expect_popup() as popup_info:
     page.click("//a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']")
     page1 = popup_info.value
    # ---------------------
    context.close()
    browser.close()
    with sync_playwright() as playwright:
    run(playwright

    此外,playwright还提供了同步和异步的API接口,文档如下。

    • 链接:https://microsoft.github.io/playwright-python/index.html

    同步

    下面示例代码:依次打开三个浏览器,前往baidu搜索,截图后退出。

    from playwright import sync_playwright
    with sync_playwright() as p:
    for browser_type in [p.chromium, p.firefox, p.webkit]:
     browser = browser_type.launch()
     page = browser.newPage()
     page.goto('https://baidu.com/')
     page.screenshot(path=f'example-{browser_type.name}.png')
     browser.close()

    异步

    异步操作可结合asyncio同时进行三个浏览器操作。

    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('http://baidu.com/')
     await page.screenshot(path=f'example-{browser_type.name}.png')
     await browser.close()
     asyncio.get_event_loop().run_until_complete(main())

    移动端

    更厉害的是,playwright还可支持移动端的浏览器模拟。下面是官方文档提供的一段代码,模拟在给定地理位置上手机iphone 11 pro上的Safari浏览器,首先导航到maps.google.com,然后执行定位并截图。

    from playwright import sync_playwright
    with sync_playwright() as p:
    iphone_11 = p.devices['iPhone 11 Pro']
    browser = p.webkit.launch(headless=False)
    context = browser.newContext(
     **iphone_11,
     locale='en-US',
     geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },
     permissions=['geolocation']
    )
    page = context.newPage()
    page.goto('https://maps.google.com')
    page.click('text="Your location"')
    page.screenshot(path='colosseum-iphone.png')
    browser.close()

    另外,还可以配合pytest插件一起使用,感兴趣可以自己试一下。

    3、总结

    playwright相比已有的自动化测试工具有很多优势,其中有:

    支持所有浏览器的

    • 在Chromium,Firefox和WebKit上进行测试。Playwright拥有适用于所有现代浏览器的完整API覆盖,包括Google Chrome和Microsoft Edge(带有Chromium),Apple Safari(带有WebKit)和Mozilla Firefox。
    • 跨平台的WebKit测试。使用Playwright,使用适用于Windows,Linux和macOS的WebKit构建,测试您的应用程序在Apple Safari中的行为。在本地和CI上进行测试。
    • 测试手机。使用设备仿真在移动Web浏览器中测试您的自适应Web应用程序。
    • 无报文头与有报文头。Playwright支持所有浏览器和所有平台的无头(无浏览器UI)和有头(有浏览器UI)模式。有报文头模式适用于调试,而无报文头适用于CI / cloud执行。

    拥有快速可靠的执行

    • 自动等待APIs。Playwright交互会自动等待直到元素准备就绪。这样可以提高可靠性并简化测试编写流程。
    • 无超时自动化。Playwright会接收浏览器信号,例如网络请求,页面导航和页面加载事件,以消除导致睡眠中断的烦恼。
    • 与浏览器上下文保持并行。对于多个并行孤立的浏览器上下文可执行环境重复使用一个单独的浏览器实例。
    • 性元素选择器。Playwright可以依靠面向用户的字符串(例如文本内容和可访问性标签)来选择元素。这些字符串比紧耦合到DOM结构的选择器更具弹性。

    拥有强大的自动化功能

    • 多个域,页面和框架。Playwright是一种进程外自动化驱动程序,不受页面内JavaScript执行范围的限制,并且可以自动执行具有多个页面的方案。
    • 强大的网络控制。Playwright引入上下文范围的网络拦截以便进行终止或者模拟网络请求。
    • 现代网络功能。Playwright通过插入的选择器,地理位置,权限,Web Worker和其他现代Web API支持Web组件。
    • 涵盖所有场景的能力。支持文件下载和上传,进程外iframe,原生输入事件,甚至是深色模式。

    但它也有局限性

    • 旧版Edge和IE11支持。Playwright不支持旧版Microsoft Edge或IE11(弃用通知)。支持新的Microsoft Edge(在Chromium上)。
    • Java语言绑定:Playwright API目前无法在Java或Ruby中使用。这是暂时的限制,因为Playwright旨在支持任何语言的绑定。
    • 在真实的移动设备上进行测试:Playwright使用桌面浏览器来模拟移动设备。

    虽然有一些局限,但现在playwright 已经更新到了 1.7.0 版本,随着一代代的更新,系统也会更为完善,作为一款小白神器,为大家省了那么多事情,我们相信它的未来会越来越好。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 微软 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。