Python Playwright API使用实例详解

news2024/12/24 8:34:48

下方查看历史精选文章

重磅发布 - 自动化框架基础指南pdfv1.1
大数据测试过程、策略及挑战

测试框架原理,构建成功的基石

在自动化测试工作之前,你应该知道的10条建议

在自动化测试中,重要的不是工具

什么是 Playwright

Playwright 是一个 Node.js 库,它提供了一个高级的 API 来自动化 Chromium、Firefox 和 WebKit 浏览器中的操作。Python Playwright API 是 Playwright 的 Python 版本,它提供了一套与 Node.js 版本相同的 API,可以在 Python 中使用。

Python Playwright API 的目标是提供一个高级的 API,使得开发者可以简单、快速地编写 Web 应用程序的自动化测试、数据爬取、表单自动填充等任务。

安装 Playwright

在使用 Python Playwright API 之前,需要先安装 Playwright。安装方法如下:

!pip install playwright

安装完成后,需要下载安装 Chromium、Firefox 和 WebKit 三种浏览器,可以使用以下命令进行下载:

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://example.com')
            await browser.close()
asyncio.run(main())

这个命令会自动下载并安装 Chromium、Firefox 和 WebKit 三种浏览器。

3. 使用 Playwright

使用 Python Playwright API,可以通过以下步骤在浏览器中自动执行操作:

  • 启动浏览器;

  • 打开一个页面;

  • 执行一些操作,例如点击链接、填写表单等;

  • 获取页面内容;

  • 关闭浏览器。

下面是一个示例代码,它展示了如何使用 Playwright 在浏览器中打开网页、填写表单并提交表单:

from playwright.sync_api import Playwright, Browser, Page
def run(playwright: Playwright) -> None:
    with playwright.chromium.launch() as browser:
        with browser.new_context() as context:
            with context.new_page() as page:
                page.goto('https://github.com/login')
                page.fill('#login_field', 'your-username')
                page.fill('#password', 'your-password')
                page.click('button[type="submit"]')
                # Wait for navigation to finish
                page.wait_for_selector('"#your-profile-link"')
                print(page.title())
if __name__ == '__main__':
    from playwright.sync_api import Playwright, sync_playwright
    with sync_playwright() as playwright:
        run(playwright)

这个示例代码使用 Chromium 浏览器打开 GitHub 登录页面,填写用户名和密码并点击提交按钮。然后等待页面跳转完成,并打印出当前页面的标题。

4. Playwright API 详解

4.1 浏览器操作

使用 Playwright 打开浏览器的方法如下:

from playwright.sync_api import Playwright, Browser
with playwright.chromium.launch() as browser:
    # do something

这个代码会使用 Chromium 浏览器打开一个新的浏览器窗口。

4.2 页面操作

使用 Playwright 打开页面的方法如下:

from playwright.sync_api import Playwright, Browser, Page
with browser.new_context() as context:
    with context.new_page() as page:
        page.goto('https://example.com')

这个代码会在当前浏览器中打开一个新的页面,并跳转到 example.com 网站。

4.3 等待操作

在测试中,经常需要等待页面加载完成或者等待某个元素出现。使用 Playwright,可以通过以下代码实现等待:

from playwright.sync_api import Playwright, Browser, Page
with browser.new_context() as context:
    with context.new_page() as page:
        page.goto('https://example.com')
        page.wait_for_selector('#some-element')

这个代码会等待网页中 ID 为 some-element 的元素出现后,才会继续执行后续代码。

4.4 元素操作

使用 Playwright,可以对页面中的元素进行各种操作,例如点击、填写、截图等。以下代码展示了如何对页面中的元素进行操作:

from playwright.sync_api import Playwright, Browser, Page
with browser.new_context() as context:
    with context.new_page() as page:
        page.goto('https://example.com')
        page.fill('#username', 'your-username')
        page.fill('#password', 'your-password')
        page.click('#login-button')
        page.screenshot(path='screenshot.png')

这个代码会在 example.com 网站中填写用户名和密码,并点击登录按钮。登录成功后,会对页面进行截图。

4.5 异步操作

Playwright 支持异步操作,可以通过以下代码实现异步操作:

from playwright.async_api import Playwright, async_playwright
async def main() -> None:
    async with async_playwright() as playwright:
        browser = await playwright.chromium.launch()
        context = await browser.new_context()
        page = await context.new_page()
        await page.goto('https://example.com')
        await browser.close()
asyncio.run(main())

这个代码会异步地使用 Chromium 浏览器打开 example.com 网站,并在操作完成后关闭浏览器。

5. 总结

Python Playwright API 是一个高级的自动化测试和数据爬取工具,它提供了一套与 Node.js 版本相同的 API,可以在 Python 中使用。通过 Python Playwright API,可以快速、简单地编写 Web 应用程序的自动化测试、数据爬取、表单自动填充等任务。

在本篇文章中,我们介绍了如何安装 Python Playwright API、使用 Playwright 打开浏览器和页面、等待页面加载、操作页面元素等操作。同时,我们还介绍了如何使用异步操作来提高代码执行效率。

c39da6e2523a71d9c518e4244bb599ee.jpeg

10ee60084fab136a3b1d129ddbd14114.png

微信搜一搜 或 长按加群

a32d5dec700c42b1e26985053ded075f.png

开源优测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/600303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

38从零开始学Java之封装到底是咋回事?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们知道,Java是面向对象的编程语言。关于面向对象的概念,壹哥在之前的文章中…

【linux】进程: systemd、systemctl

状态 R —— 运行S(TASK_INTERRUPTIBLE) —— 等待,可中断,IOD(TASK_UNINTERRUPTIBLE) —— 等待,不可中断K(TASK_KILLABLE) —— 等待,可删除,I…

chatgpt赋能python:Python内置函数大全表

Python 内置函数大全表 Python 是一种强大的编程语言,拥有许多有用的内置函数。这些函数可以在编写 Python 代码时大大简化开发人员的工作流程。本文提供了一张Python内置函数的大全表,以及每个函数的简要说明。 内置函数列表 以下是 Python 的内置函…

Elasticsearch:在 Elasticsearch 中使用 NLP 和矢量搜索增强聊天机器人功能

作者:Priscilla Parodi 会话界面已经存在了一段时间,并且作为协助各种任务(例如客户服务、信息检索和任务自动化)的一种方式而变得越来越流行。 通常通过语音助手或消息应用程序访问,这些界面模拟人类对话,…

众议院压倒性通过!

* * * 原创:刘教链 * * * 号外:今天在小号“刘教链Pro”发表了一篇《大V出货了》,欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币回升至27k上方。 万众瞩目的美债危机到了千钧一发之际。继周日美国总统拜登和众议院议长麦卡锡初步达成口头…

618特辑 | 人到中年的品质生活,是我对自己的最大尊重

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 文案 / 粒粒 封面 / 姝琦midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 不知从什么时候开始,我们开始高亮“实用主义”的生活态度,一切以…

FPGA PAL视频BT656解码Video Processing Subsystem去隔行 TW2867采集 提供工程源码和技术支持

目录 1、前言2、我这里已有的PAL视频解码方案3、模拟视频概述4、模拟视频颜色空间5、逐行与隔行6、BT656数据与解码BT656数据格式BT656数据解码 7、TW2867芯片解读与配置TW2867芯片解读TW2867芯片配置TW2867时序分析 8、设计思路与框架9、vivado工程详解Block Design设计SDK设计…

c++实现产品功能(简单基础功能)

通过c++实现公司产品功能,要求能在VS和CB上完美运行,实现的功能基础简单 #include <iostream> #include <string>// 摄像机类 class Camera { public:// 成员函数:拍摄照片void takePhoto() {std::cout << "Take a photo." << std::endl;…

六一儿童节,小灰给大家准备了特别的礼物!

大家好&#xff0c;我是程序员小灰。 熟悉小灰的朋友们都知道&#xff0c;小灰比较擅长写作&#xff0c;却并不善于口头表达。 但是&#xff0c;在2023年&#xff0c;小灰决定搞一件大事情&#xff0c;与我的团队成员共同组建《小灰AI共创汇》。我们这个共创汇的目标&#xff0…

鹅厂专家讲透AI文本生成解码策略与代码实现

&#x1f449;腾小云导读 本文以 huggingface-transformers 的文本生成解码代码为例&#xff0c;对文本生成常用的五种解码策略 greedy search、beam search、sample、sample and rank & beam sample、group beam search 进行逐行解读。每一小节首先会介绍对应解码策略的原…

JavaScript实现输入数字,通过数组方式将它们连接起来的代码

以下为实现输入数字&#xff0c;通过数组方式将它们连接起来的程序代码和运行截图 目录 前言 一、输入数字&#xff0c;通过数组方式将它们连接起来 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择&#xff0c;您可以在目录里进行…

JetBrains的.NET和ASP.NET集成开发环境Rider 2023版本在Win10系统的下载与安装配置教程

目录 前言一、Rider 安装二、使用配置总结 前言 Rider是一款专为.NET和ASP.NET开发人员设计的集成开发环境&#xff08;IDE&#xff09;。它提供了丰富的功能和工具&#xff0c;可以帮助开发人员更高效地编写、调试和部署.NET和ASP.NET应用程序。 Rider的主要特点&#xff1a…

Linux---守护进程

window称为&#xff1a;服务 区分以下四点&#xff1a; 会话会话首进程进程组组长进程 不想让会话关闭&#xff0c;但是会话中的进程不想关闭&#xff0c;解决方法&#xff1a;把当前进程脱离出来&#xff0c;放到一个新会话中&#xff1b;在新会话中成为会话首进程 那么表示…

Change Buffer:提升InnoDB性能的关键技术

摘要&#xff1a; Change Buffer是一种特殊的数据结构&#xff0c;用于缓存二级索引页的更改操作&#xff0c;当这些页不在缓冲池中时。本文将介绍Change Buffer的工作原理、优势和配置&#xff0c;并提供了监控Change Buffer的方法。 Change Buffer是InnoDB存储引擎中的一个重…

小米基于 Flink 的实时数仓建设实践

摘要&#xff1a;本文整理自小米软件开发工程师周超&#xff0c;在 Flink Forward Asia 2022 平台建设专场的分享。本篇内容主要分为四个部分&#xff1a; 1. 小米数仓架构演变 2. FlinkIceberg 架构升级实践 3. 流批一体实时数仓探索 4. 未来展望 Tips&#xff1a;点击「阅读原…

每每聊到线程Thread

进程和线程 进程 所谓计算机程序 Program&#xff0c;其实就是通过执行一系列指令来完成某一个任务。当你启动一个程序时&#xff0c;操作系统(OS)会将其加载到内存中&#xff0c;并在内存中申请一块固定地址的命名空间(address space)&#xff0c;并在此命名空间内执行相关指令…

bert中文文本摘要代码(2)

bert中文文本摘要代码 写在最前面关于BERT使用transformers库进行微调 model.py自定义参数激活函数geluswish定义激活函数字典 BertConfig类参数配置vocab_size_or_config_json_filefrom_dict方法&#xff08;from_json_file时调用&#xff09;from_json_file方法一系列方法 Be…

Coursera自动驾驶2.1——最小二乘法和线性和非线性卡尔曼滤波

文章目录 一、最小二乘法1.最小二乘法2.加权最小二乘法3.递归最小二乘法4.最小二乘法与极大似然 二、卡尔曼滤波1.概述2.线性卡尔曼滤波3.扩展卡尔曼滤波Error State卡尔曼滤波 4.无迹卡尔曼滤波&#xff08;1&#xff09;无迹变换&#xff08;2&#xff09;无迹卡尔曼滤波 一、…

I.MX6ull 中断 一

一 I.MX6ull 中断介绍 1 中断类型 Cortex-A7内核有8个异常中断&#xff0c;这8个异常中断的中断向量表如下表所示&#xff1a; Cortex-A 内核 CPU 的所有外部中 断都属于这个 IRQ 中断&#xff0c;当任意一个外部中断发生的时候都会触发 IRQ 中断。在 IRQ 中断服 务函数里面就…

linux php8.2安装swoole扩展

下载swoole源码&#xff1a; wget https://wenda-1252906962.file.myqcloud.com/dist/swoole-src-5.0.2.tar.gz tar -zxvf swoole-src-5.0.2.tar.gz cd swoole-src-5.0.2/ 初始化&#xff1a; /www/server/php/82/bin/phpize 配置检查&#xff1a; ./configure --with-…