【PlayWright教程(二)】核心概念

playwright教程(二)适合小白 本次案例为了让小白加深对playwright基本语法的认识,有一个简单案例,上手简单,一学就会 阅读详情

PlayWright的核心概念包括:

1. Browser

一个Browser是一个Chromium, Firefox 或 WebKit(plarywright支持的三种浏览器)的实例plarywright脚本通常以启动浏览器实例开始,以关闭浏览器结束。浏览器实例可以在headless(没有 GUI)或head模式下启动。Browser实例创建:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    browser.close()

启动browser实例是比较耗费资源的,plarywright做的就是如何通过一个browser实例最大化多个BrowserContext的性能。

API:

2.BrowserContext

一个BrowserContex就像是一个独立的匿名模式会话(session),非常轻量,但是又完全隔离。

(译者注:每个browser实例可有多个BrowserContex,且完全隔离。比如可以在两个BrowserContext中登录两个不同的账号,也可以在两个 context 中使用不同的代理。 )

context创建:

browser = playwright.chromium.launch()
context = browser.new_context()

context还可用于模拟涉及移动设备、权限、区域设置和配色方案的多页面场景,如移动端context创建:
 

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    iphone_11 = p.devices['iPhone 11 Pro']
    browser = p.webkit.launch(headless=False)
    context = browser.new_context(
        **iphone_11,
        locale='de-DE',
        geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },
        permissions=['geolocation']
    )
    browser.close()

API:

3. Page 和 Frame

 一个BrowserContext可以有多个page,每个page代表一个tab或者一个弹窗。page用于导航到URL并与page内的内容交互。

创建page:

page = context.new_page()

# Navigate explicitly, similar to entering a URL in the browser.
page.goto('http://example.com')
# Fill an input.
page.fill('#search', 'query')

# Navigate implicitly by clicking a link.
page.click('#submit')
# Expect a new url.
print(page.url)

# Page can navigate from the script - this will be picked up by Playwright.
# window.location.href = 'https://example.com'

 一个page可以有多个frame对象,但只有一个主frame,所有page-level的操作(比如click),都是作用在主frame上的。page的其他frame会打上iframe HTML标签,这些frame可以在内部操作实现访问。

# 通过name属性获取frame
frame = page.frame('frame-login')

# 通过URL获取frame
frame = page.frame(url=r'.*domain.*')

# 通过其他选择器(selector)获取frame
frame_element_handle = page.query_selector('.frame-class')
frame = frame_element_handle.content_frame()

# 与frame交互
frame.fill('#username-input', 'John')

在录制模式下,会自动识别是否是frame内的操作,不好定位frame时,那么可以使用录制模式来找。

API:

4. Selector

 playwright可以通过 CSS selector, XPath selector, HTML 属性(比如 id, data-test-id)或者是文本内容定位元素。

除了xpath selector外,所有selector默认都是指向shadow DOM,如果要指向常规DOM,可使用*:light。不过通常不需要。

# Using data-test-id= selector engine
page.click('data-test-id=foo')

# CSS and XPath selector engines are automatically detected
page.click('div')
page.click('//html/body/div')

# Find node by text substring
page.click('text=Hello w')

# Explicit CSS and XPath notation
page.click('css=div')
page.click('xpath=//html/body/div')

# Only search light DOM, outside WebComponent shadow DOM:
page.click('css:light=div')

# 不同的selector可组合使用,用 >>连接
# Click an element with text 'Sign Up' inside of a #free-month-promo.
page.click('#free-month-promo >> text=Sign Up')

# Capture textContent of a section that contains an element with text 'Selectors'.
section_text = page.eval_on_selector('*css=section >> text=Selectors', 'e => e.textContent')

详细:

Element selectors | Playwright Python

5.  Auto-waiting

playwright在执行操作之前对元素执行一系列可操作性检查,以确保这些行动按预期运行。它会自动等待(auto-wait)所有相关检查通过,然后才执行请求的操作。如果所需的检查未在给定的范围内通过timeout,则操作将失败并显示TimeoutError 

如 page.click(selector, **kwargs) 和 page.fill(selector, value, **kwargs) 这样的操作会执行auto-wait ,等待元素变成可见(visible)和 可操作( actionable)。例如,click将会:

  • 等待selectorx选定元素出现在 DOM 中
  • 待它变得可见(visible):有非空的边界框且没有 visibility:hidden
  • 等待它停止移动:例如,等待 css 过渡(css transition)完成
  • 将元素滚动到视图中
  • 等待它在动作点接收点事件:例如,等待元素不被其他元素遮挡
  • 如果在上述任何检查期间元素被分离,则重试
# Playwright waits for #search element to be in the DOM
page.fill('#search', 'query')

# Playwright waits for element to stop animating
# and accept clicks.
page.click('#search')

#也可显示执行等待动作

# Wait for #search to appear in the DOM.
page.wait_for_selector('#search', state='attached')
# Wait for #promo to become visible, for example with `visibility:visible`.
page.wait_for_selector('#promo')

# Wait for #details to become hidden, for example with `display:none`.
page.wait_for_selector('#details', state='hidden')
# Wait for #promo to be removed from the DOM.
page.wait_for_selector('#promo', state='detached')

 

 API:

6. Execution context

API page.evaluate(expression, **kwargs) 可以用来运行web页面中的 JavaScript函数,并将结果返回到plarywright环境中。浏览器的全局变量,如 window 和 document, 可用于 evaluate。

href = page.evaluate('() => document.location.href')

# if the result is a Promise or if the function is asynchronous evaluate will automatically wait until it's resolved

status = page.evaluate("""async () => {
  response = fetch(location.href)
  return response.status
}""")

 

7. Evaluation Argument

  page.evaluate(expression, **kwargs) 方法接收单个可选参数。此参数可以是Serializable值和JSHandle或ElementHandle实例的混合。句柄会自动转换为它们所代表的值

result = page.evaluate("([x, y]) => Promise.resolve(x * y)", [7, 8])
print(result) # prints "56"


print(page.evaluate("1 + 2")) # prints "3"
x = 10
print(page.evaluate(f"1 + {x}")) # prints "11"


body_handle = page.query_selector("body")
html = page.evaluate("([body, suffix]) => body.innerHTML + suffix", [body_handle, "hello"])
body_handle.dispose()


# A primitive value.
page.evaluate('num => num', 42)

# An array.
page.evaluate('array => array.length', [1, 2, 3])

# An object.
page.evaluate('object => object.foo', { 'foo': 'bar' })

# A single handle.
button = page.query_selector('button')
page.evaluate('button => button.textContent', button)

# Alternative notation using elementHandle.evaluate.
button.evaluate('(button, from) => button.textContent.substring(from)', 5)

# Object with multiple handles.
button1 = page.query_selector('.button1')
button2 = page.query_selector('.button2')
page.evaluate("""o => o.button1.textContent + o.button2.textContent""",
    { 'button1': button1, 'button2': button2 })

# Object destructuring works. Note that property names must match
# between the destructured object and the argument.
# Also note the required parenthesis.
page.evaluate("""
    ({ button1, button2 }) => button1.textContent + button2.textContent""",
    { 'button1': button1, 'button2': button2 })

# Array works as well. Arbitrary names can be used for destructuring.
# Note the required parenthesis.
page.evaluate("""
    ([b1, b2]) => b1.textContent + b2.textContent""",
    [button1, button2])

# Any non-cyclic mix of serializables and handles works.
page.evaluate("""
    x => x.button1.textContent + x.list[0].textContent + String(x.foo)""",
    { 'button1': button1, 'list': [button2], 'foo': None })

 

其他参考:

Playwright(python)微软浏览器自动化教程(二)_weixin_44043378的博客-优快云博客

Playwright Python教程:基础篇 本教程面向从未接触过 Playwright 或刚刚起步的自动化测试开发者。我们将从最核心的概念讲起,确保你能牢固地打下基础。1. 是什么? Playwright 是一个用于 Web 测试和自动化的开源库。它提供了一个高级 API 来控制 Chromium、Firefox 和 WebKit 浏览器,让你能够以编程方式模拟用户操作,如点击、输入、导航等,从而进行自动化测试或网页抓取。2. 为什么选择它?(对比 Selenium)理解这三个核心概念是学好 Playwright 的关键。它们的关系就像浏览器 -> 阅读详情

相关推荐

playwright-mcp 安装使用的详细教程

Playwright MCP 快速入门指南 Playwright MCP Server 是由微软开发的浏览器自动化服务,通过 MCP 协议为 AI/Agent/LLM 提供网页交互能力。它基于可访问性树而非屏幕截图,支持多种浏览器和运行模式。 安装要求: Node.js v18+ 命令行操作能力 支持 MCP 的客户端 安装方式: 通过 npx 快速启动:npx @playwright/mcp@latest 项目依赖安装:npm install @playwright/mcp 主要特性: 支持 Chrome

上善若水 7996

Playwright的page.locator和page.query_selector的区别

如果你只需要操作单个元素,并且对性能要求较高,可以使用。

freetester的博客 1289

Web自动化测试实战:从核心概念到Playwright最佳实践

Web自动化测试是现代软件工程中提升效率、保障质量的关键实践。其核心原理是通过脚本或工具模拟用户在浏览器中的操作,替代重复性人工劳动,从而实现测试流程的自动化。这项技术的核心价值在于解放人力、提升测试效率与一致性,是持续集成与DevOps流程中的重要环节。从技术实现层面看,主要分为构建流程自动化(如代码检查)和浏览器行为自动化两大路径。当前,以Playwright、Selenium、Puppeteer为代表的浏览器自动化工具,凭借其强大的API和跨浏览器支持,已成为构建端到端测试套件的首选。特别是在需要验证

Liusuzhi19610221的博客 444

python爬虫之pyppeteer库

文章目录pyppeteerpyppeteer和puppeteer的不同点安装简单使用模拟文本输入和点击移除Chrome正受到自动测试软件的控制爬取京东商城 pyppeteer pyppeteer 是非官方 Python 版本的 Puppeteer 库,浏览器自动化库,由日本工程师开发。 Puppeteer 是 Google 基于 Node.js 开发的工具,调用 Chrome 的 API,通过 JavaScript 代码来操纵 Chrome 完成一些操作,用于网络爬虫、Web 程序自动测试等。 pyppet

Java_KW的博客 2417

python+playwright 学习-22理解Locator 定位机制与元素句柄 ElementHandle

ElementHandle 表示页内 DOM 元素。ElementHandles 可以使用page.query_selector()方法创建。 Locator和ElementHandle之间的区别在于后者指向特定元素,而 Locator 捕获如何检索该元素的逻辑。 如果你能理解ElementHandle 和 Locator 定位机制,那也就明白了selenium的定位方式 和 playwright 定位方式的本质区别。

qq_27371025的博客 2079

python+playwright 学习-29 如何判断元素是否存在

playwright 如何判断某个元素是否存在?

qq_27371025的博客 4822

Playwright 入门教程:从概念到应用(Java 版)

Playwright是由 Microsoft 开发的一个现代化的自动化测试工具,专为现代 Web 应用设计。它支持多种编程语言(如 Java、JavaScript/TypeScript、Python 和 C#),并提供对主流浏览器(Chromium、Firefox、WebKit)的原生支持。Playwright 不仅可以用于自动化测试,还可以用于抓取动态内容、调试和分析 Web 应用。

苍煜 3450

Trae编程工具Cline插件深度集成与Claude 3.7 API Key高级配置实战

本文详细介绍了如何在Trae编程工具中深度集成Cline插件并配置Claude 3.7 API Key的高级技巧。通过实战案例,展示了如何提升代码补全质量、实现多轮对话记忆及自定义代理设置,特别适合全栈工程师和需要私有化AI服务的团队。文章还涵盖了安装流程、API Key获取方式及企业级部署的最佳实践。

weixin_28829903的博客 436

playwright 核心概念

playwright

CatherineC20150619的博客 896

【Qt】QByteArray详解

对象共享同一份数据,直到修改时才进行深拷贝,以节省内存和计算资源。:可存储任意二进制数据(如图片、音频、协议数据),不依赖字符编码。与编码(如 UTF-8、Latin-1)之间的桥梁(例如。• 补零规则确保奇数字符串能正确解析,避免数据截断。:内部自动分配和释放内存,无需手动管理。将输入的字符串视为十六进制编码数据,返回实际数据长度(不包括结尾的。的输入必须是有效的十六进制字符(,但针对 Qt 框架做了优化。:处理加密后的二进制结果(如。• 如果输入字符串长度为奇数,• 若输入长度为奇数,自动在。

CSUC的博客 1598

国科大作业考试资料《人工智能原理与算法》2024新编-第二次作业整理

1、对于下列活动,分别给出任务环境的PEAS描述, 并按2.3.2节列出的性质进行分析: 3、为图2.2中描述的吸尘器世界实现一个可以进行性能度量的环境模拟器。你的实现是必须是模块化的,以使传感器、执行器和环境特征(大小、形状、灰尘放置等)便于修改。 4、实现上述题目真空吸尘器环境中的简单反射Agent。用所有可能的初始灰尘分布和Agent位置,运行环境模拟器和Agent。记录Agent在每种情况下的性能评分和总体平均评分。

MatsumotoChrikk 1187

Playwright核心教程(Python)

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程​Python 版本的 Playwright 因其简洁的语法和强大的功能,非常适合快速上手 Web 自动化。本教程将从零开始,带你掌握 Python + Playwright 的核心用法。

了解➔熟悉➔掌握➔精通 2648

大模型应用开发 100 天:Python + LLM 从入门到精通 day01~环境搭建与开发工具

Day 1 正式开启《大模型应用开发 100 天》实战旅程。本文聚焦 AI 开发最容易被忽视却至关重要的环境搭建环节,系统讲解基于 pyenv、uv、VS Code 构建一套可复现、项目隔离的标准化 Python 开发工具链。你将掌握多 Python 版本管理、极速依赖安装、虚拟环境隔离、代码规范配置完整流程,配套可直接运行的环境校验脚本与 Mermaid 架构图,规避版本冲突、环境污染等高频踩坑问题,为后续 99 天 LLM 项目开发筑牢底层基础。来自华北理工大学段一凡的博客文章

段一凡的博客 247

Playwright(Java版) - 3: Playwright 核心概念

在 Playwright 中,核心概念主要围绕(浏览器)、(浏览器上下文)、(页面)展开。它们是所有测试脚本的基础,通过这三个核心对象,可以完成自动化测试的绝大多数任务。

一名全栈开发工程师 1177

Origin教程004:Origin图形导出

需要编辑的话,双击图形,会自动用origin软件打开图形,这种方式是最开始导出图形的功能,方式一和二都是后面增加的。如果导出的图片边距较大的时候,会影响图片的美观,可以通过。也可以设置在PPT中直接编辑,找到。解决方法是,选择一条线,

WwLK123的博客 6332

倍福控制第三方伺服走CSV模式--以汇川伺服为例

在使用TwinCAT软件控制标准CiA402协议的EtherCAT伺服时使用TwinCAT软件NC自带的运动控制指令控制伺服,此时伺服驱动器一般工作在CSP/CSV/CST模式。最常见伺服驱动器工作在CSP模式,轨迹规划运行在TwinCAT软件,位置环速度环电流环运行在伺服驱动器中。该模式下速度波动较大,需要极度平稳的速度需要采用CSV模式。本文讲述的是伺服驱动器工作在CSV模式,此时轨迹规划和位置环均运行在TwinCAT软件,速度环电流环运行在伺服驱动器中。为了简化文字描述,本文采用图文结合的方式介绍伺服

weixin_41883890的博客 4848

Playwright 教程

摘要:Playwright 是 Microsoft 开发的现代化 Web 自动化测试和爬虫框架,支持 Chromium、Firefox 和 WebKit 三大浏览器,提供跨语言统一 API。2025 年最新版本具备自动等待、可靠事件、代码生成等特性,比 Selenium 更稳定高效。安装简单,支持 Python 和 Node.js,提供录制功能快速生成脚本。核心功能包括智能定位、断言、网络拦截和测试报告。推荐学习官方文档、菜鸟教程和中文社区资源,进阶可探索 Playwright Test 框架和 AI 驱动

m0_57545130的博客 1616

Try Playwright 项目教程

Try Playwright 项目教程 1. 项目介绍 Try Playwright 是一个开源项目,旨在帮助开发者通过浏览器直接执行和分享 Playwright 脚本,从而快速上手 Playwright。Playwright 是一个用于自动化浏览器操作的工具,支持多种编程语言,如 JavaScript、TypeScript、Python、C# 和 Java。Try Playwright 提供了一...

gitblog_00033的博客 1101

9篇1章1节:中国居民健康与营养调查(CHNS)数据库的官网解析和数据下载(2026年版)

在探讨中国社会经济转型与人口健康变迁的学术领域中,中国健康与营养调查(CHNS) 是一个无法绕过的权威数据库。本文将带你深入了解CHNS的项目背景、庞大的数据体系,以及如何通过这两个核心网站获取关键的家庭、个人及社区层面的研究数据。

MD Code 1699

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Playwright入门

Playwright入门简介安装开始录制基本概念browsercontextpageframe选择器自动等待 简介 Playwright是微软开源的一个UI自动化测试工具。添加了默认等待时间增加脚本稳定性,并提供视频录制、网络请求支持、自定义的定位器、自带调试器等新特性。 安装 pip install playwright # 安装playwright的python版本 playwright install # 安装playwright自带的浏览器和ffmepg,此步骤耗时较长 开始录制 在命令行执行

凌空摘星的博客 3万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Playwright教程】:初识Playwright

Playwright 是由微软开发的一个开源 Web 自动化测试框架,用于在 Chromium、Firefox 和 WebKit 三大浏览器引擎中进行端到端测试。

dingdangmaoqaq66的博客 236

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

playwright 对象是 Playwright 框架中的核心对象

Playwright对象是Playwright框架中的一个重要对象,它充当了管理和控制浏览器实例的中介,并提供了访问不同浏览器引擎功能的接口。

book_dw5189的博客 1093

playwright--核心概念和Selector定位

Playwright提供了一组API可自动化操作Chromium,Firefox和WebKit浏览器。通过使用 Playwright API,可以编写脚本来创建新的浏览器页面,导航到 URL,然后与页面上的元素进行交互。Playwright 可用于自动化用户交互以验证和测试 Web 应用程序。浏览器浏览器上下文页面和框架Selectors自动等待执行上下文。

weixin_44688529的博客 1705

Playwright自动化测试与爬虫实战:从核心概念到高级应用

Web自动化测试与数据采集是现代软件开发与数据分析中的关键技术,其核心在于通过程序控制浏览器模拟真实用户操作。其原理是通过浏览器驱动协议与页面进行交互,实现对网页元素的定位、操作与状态监听。这项技术的价值在于能够显著提升测试效率、确保应用质量,并高效获取动态网页数据。在应用场景上,它广泛用于端到端测试、UI回归测试以及复杂交互场景的爬虫开发。本文聚焦于Playwright这一新兴的现代化工具,它凭借内置的自动等待机制、强大的选择器引擎以及对多浏览器的原生支持,有效解决了传统方案中常见的测试脆弱性和配置繁琐问

weixin_33875564的博客 396

Playwright 爬虫最强推荐 非常实用

Playwright 是由 Microsoft 开发的一个开源 Node.js 库(后扩展支持 Python, Java, .NET),用于自动化 Chromium、Firefox 和 WebKit 浏览器。它旨在提供一个单一的 API 来驱动所有现代浏览器,实现可靠的端到端测试和 Web 自动化。

zhangyunchou2015的博客 1875
上一篇: 【PlayWright教程(一)】安装和使用(python)
下一篇: 【PlayWright教程(三)】基础操作汇总
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值