【playwright+ python】学习笔记

python+playwright-python微软自动化工具 本文转自"AirPython" 它支持主流的浏览器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同时支持以无头模式、有头模式运行 playwright-python提供了同步、异步的 API,可以结合 Pytest测试框架使用,并且支持浏览器端的自动化脚本录制 项目地址:https://github.com/microsoft/playwright-python 安装playwright-python,执行命令:pip installplaywright... 阅读详情

参考教程点这里!

快速入门

一、playwright 介绍

playwright 是微软开发的 web 应用的自动化测试框架。

二、安装

2.1 安装 playwright 客户端库

pip install playwright

2.2 安装 playwright 浏览器

playwright 这个项目默认使用自己编译好的几种浏览器,比如 chromium, firefox, webkit这些浏览器是通过各自的开源项目编译出来的。

和我们下载安装的 Chrome,Firefox,Safri 这些品牌浏览器(stock browser)有区别。

playwright install

如果你只需要自动化一种浏览器,可以在参数中指定,比如 playwright install chromium。

品牌浏览器往往会自动更新,如果使用Selenium自动化,就需要不断下载新的驱动。playwright使用自编译浏览器不会自动更新,从而避免驱动和浏览器不匹配的问题。

当然,如果你只是想测试和品牌浏览器的兼容性,就无需上述下载了。

三、示例代码

3.1 示例

from playwright.sync_api import sync_playwright

input('1....')
# 启动 playwright driver 进程
p = sync_playwright().start()

input('2....')
# 启动浏览器,返回 Browser 类型对象
browser = p.chromium.launch(headless=False)

# 创建新页面,返回 Page 类型对象
page = browser.new_page()
page.goto("https://www.byhy.net/cdn2/files/selenium/stock1.html")
print(page.title()) # 打印网页标题栏

# 输入通讯,点击查询。这是定位与操作,是自动化重点,后文详细讲解
page.locator('#kw').fill('通讯')  # 输入通讯
page.locator('#go').click()      # 点击查询

# 打印所有搜索内容
lcs = page.locator(".result-item").all()
for lc in lcs:
    print(lc.inner_text())

input('3....')
# 关闭浏览器
browser.close()
input('4....')
# 关闭 playwright driver 进程
p.stop()

如果要使用已经安装的品牌浏览器,比如 Chrome,可以通过 executable_path 参数来指定其安装路径:

# 加上 executable_path参数
browser = p.chromium.launch(headless=False,
  executable_path='c:\Program Files\Google\Chrome\Application\chrome.exe')

3.2 使用 with as 会话管理

可以使用 with as 会话管理,我们的代码简化,不需要调用 start() 和 stop()

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("https://www.byhy.net/cdn2/files/selenium/stock1.html")
    print(page.title())
    page.locator('#kw').fill('通讯\n')
    page.locator('#go').click()
    # 打印所有搜索内容
    lcs = page.locator(".result-item").all()
    for lc in lcs:
        print(lc.inner_text())
    browser.close()

3.3 界面等待

上面的代码,大家发现不能打印出股票搜索的结果,原因是:点击查询后,立即就去检查搜索结果了,这时,界面上还没有呈现结果,所以返回的是空结果,因此,需要等待一段时间。

但是目前,我们不能在Playwright中使用 time.sleep 进行等待。
因为Playwright底层使用的是异步的python库进行各种事件处理,time.sleep 会破坏异步框架的处理逻辑。可以使用 Page 对象的 wait_for_timeout() 方法达到等待效果,单位是 毫秒。

page.wait_for_timeout(1000)

那么,我们就可以在打印搜索结果之前加上等待时间,如下面这样:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动浏览器 -- chromium浏览器
    browser = p.chromium.launch(headless=False)

    # 创建新页面
    page = browser.new_page()

    # 导航到指定url
    page.goto('https://www.byhy.net/cdn2/files/selenium/stock1.html')
    print(page.title())  # 打印页面标题

    page.locator('#kw').fill('通讯')
    page.locator('#go').click()

    # 打印搜索结果
    page.wait_for_timeout(1500)
    lcs = page.locator(".result-item").all()
    for lc in lcs:
        print(lc.inner_text())

    # 关闭浏览器
    browser.close()

此时的执行结果:
在这里插入图片描述

3.4 跟踪功能

Playwright 有个特色功能: 跟踪(tracing)
启用跟踪功能后,可以在执行自动化后,通过记录的跟踪数据文件,会看自动化过程中的每个细节。

下面的代码进行了自动化搜索股票,并打开跟踪功能,保存跟踪数据文件为trace.zip。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    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.byhy.net/cdn2/files/selenium/stock1.html")

    # 搜索名称中包含 通讯 的股票
    page.locator('#kw').fill('通讯')
    page.locator('#go').click()

    page.wait_for_timeout(1000) # 等待1秒

    lcs = page.locator(".result-item").all()
    for lc in lcs:
        print(lc.inner_text())

    # 搜索名称中包含 软件 的股票
    page.locator('#kw').fill('软件')
    page.locator('#go').click()

    page.wait_for_timeout(1000) # 等待1秒

    lcs = page.locator(".result-item").all()
    for lc in lcs:
        print(lc.inner_text())

    # 结束跟踪
    context.tracing.stop(path="trace.zip")

    browser.close()

执行完后,我们发现,当前工作目录下面多了 trace.zip 这个跟踪数据文件。
查看这个跟踪文件,有 2 中方法:

  1. 直接访问 trace.playwright.dev 这个网站,上传 跟踪文件
  2. 执行命令 playwright show-trace trace.zip

元素定位

四、元素定位

4.1 CSS 选择器定位

点击查看定位方式详解

4.1.1 Lactor 对象

PlayWright 中,可以使用CSS Selector 选择元素,就是使用Lactor类型的对象。
比如,前文中, Page 对象的 locator方法就会创建一个 Locator 类型对象,参数就可以是 CSS Selector 表达式

page.locator('#kw').fill('通讯')
page.locator('#go').click()

Page对象的 locator 定位到的如果是唯一的 html元素,就可以调用 Locator 对象的 方法,比如fill, click ,inner_text等等对元素进行操作了。

4.1.2 根据 web 属性选择元素

  • 根据 tag 名:直接填入 tag 名即可

比如 要选择 所有的tag名为div的元素,就可以是这样:

locators = page.locator('div').all()
  • 根据 id :在 id 号前面加上一个井号(#id值)
<input  type="text" id='searchtext' />
lct = page.locator('#searchtext')
  • 根据 class :在 id 号前面加上一个.(.class值)
page.locator('.animal')
  • 根据 a 标签:语法是给元素加上 []
<a href="http://www.miitbeian.gov.cn">苏ICP备88885574号</a>

css 选择器支持通过任何属性来选择元素,语法是用一个方括号 [] 。
比如要选择上面的 a元素,就可以使用 [href="http://www.miitbeian.gov.cn"] 。
这个表达式的意思是,选择 属性href值为 http://www.miitbeian.gov.cn 的元素。

from playwright.sync_api import sync_playwright

p = sync_playwright().start()
browser = p.chromium.launch(headless=False, slow_mo=50)
page = browser.new_page()
page.goto("https://www.byhy.net/cdn2/files/selenium/sample1.html")

# 根据属性选择元素
element = page.locator('[href="http://www.miitbeian.gov.cn"]')
# 打印出元素文本
print(element.inner_text())

当然,前面可以加上标签名的限制,比如a[href="http://www.miitbeian.gov.cn"]表示 选择所有 标签名为 a ,且 属性 href值为 http://www.miitbeian.gov.cn 的元素。

根据属性选择,还可以不指定属性值,比如 [href] , 表示选择 所有 具有 属性名 为href 的元素,不管它们的值是什么。

还可以选择 属性值 包含 某个字符串 的元素
比如, 要选择a节点,里面的href属性包含了miitbeian字符串,就可以这样写

a[href*="miitbeian"]

还可以 选择 属性值 以某个字符串 开头 的元素
比如, 要选择a节点,里面的href属性以http开头 ,就可以这样写

a[href^="http"]

还可以 选择 属性值 以某个字符串 结尾 的元素
比如, 要选择a节点,里面的href属性以 gov.cn 结尾 ,就可以这样写

a[href$="gov.cn"]

如果一个元素具有多个属性

<div class="misc" ctype="gun">沙漠之鹰</div>

CSS 选择器 可以指定 选择的元素要 同时具有多个属性的限制,像这样 div[class=misc][ctype=gun]

4.2 Xpath 定位

点击查看

4.3 Playwright更推荐的定位

CSS 选择器定位/xpath定位,都是根据 HTML网页元素特征 的定位,属于开发者角度的定位。

Playwright 优先不推荐这样,它推荐从用户角度视觉呈现的定位。 因为它觉得用户角度相对比较固定,不容易变, 而 html页面写法容易变化。

但有时,有的元素,没有通过用户视觉定位的特征。
开发者角度的这种HTML网页元素特征定位 还是有其优势的,必须要学习的。

下面学习 通过用户视觉定位的方法

4.4 根据文本内容定位

点击查看

4.5 根据元素 Role 定位

点击查看

4.6 使用 codegen 助手

playwright codegen

Playwright 认为, 这种根据role定位是 用户 或者辅助技术 直观感知页面的方式, 应该是最优先使用。
但是,哪些HTML元素有哪些隐含的 ARIA role 和 ARIA Attribute,对应的 Accessible Name又是什么?
规则比较复杂,新手不太容易掌握。

我们可以使用 Playwright 的代码助手 codegen ,代码助手产生代码时, 能使用 role定位的,会优先使用 role 定位。

4.7 其他用户视觉定位(了解)

点击查看

Python+Playwright自动化入门 Playwright 是专门为满足端到端测试的需求而创建的。Playwright 支持所有现代渲染引擎,包括 Chromium、WebKit 和 Firefox。在 Windows、Linux 和 macOS 上进行测试,在本地或在 CI 上进行测试,无头或使用本机移动仿真。参考:(官方文档)注:Python版本需要3.8及以上。 阅读详情

相关推荐

我的python学习笔记(requests_html、beautifulsoup、playwright)爬取电商平台热卖榜,解决动态加载,反爬等问题,适合初学者,浅显易懂

本文是作者自学python的心得分享,包括requests_html、beautifulsoup、playwright、以及一些安装方面的小心得。结合案例进行分享,主要是爬取国际知名电商平台热卖榜上的信息,解决动态加载的信息爬取难,网站反爬等问题。

2202_75696206的博客 1316

Python-playwright:一款强大的UI自动化工具、新兴爬虫利器

点击名片关注阿尘blog,一起学习,一起成长本文主要分享由微软开发的实现Web UI自动化测试工具Playwright库,相比于之前学习过selenium库,playwright对于编写自动化代码绝对是更轻松了,因为它支持脚本录制,如果只求简单点可以不用写一行代码就能够实现自动化,而且playwright有许多强大的api,很多功能比起selenium都轻松简单,好了话不多说,开启正文~play...

m0_72418211的博客 2万+

Playwright对比selenium

Selenium和Playwright都是流行的自动化测试工具,都拥有丰富的功能和API,都可以用于Web应用程序的自动化测试。选择一个测试框架,必须考虑日常工作中的场景以及当前的团队,进而选择合适的自动化测试工具来进行测试。而不是使用一个新的花里胡哨的框架,然后一段时间后因为它没有满足我们的需求而抛弃它。

m0_70618214的博客 1万+

Python+Playwright自动化测试-1-环境准备与搭建

介绍一下Playwright这款自动化神器的相关知识,现在网上的资料太少了。其实在各大博客和公众号也看到过其相关的介绍和讲解。要不就是不全面、不系统,要不就是系统全面但是人家是收费的。当然了接下来也可能介绍的不全面或者不系统,能力有限望大家理解。

javasdn的博客 3955

Python Playwright 教程

4. JavaScript 交互:Playwright 支持 JavaScript 交互,可以在页面中运行 JavaScript 代码。Python Playwright 是一个用于自动化浏览器操作的库,它可以帮助我们模拟用户行为,进行网页内容的自动化操作。通过本教程的学习,您将掌握 Playwright 的基本用法和高级用法,能够进行网页爬取、表单提交、页面元素提取等操作。1. 网页爬取:可以使用 Playwright 的 Page 对象进行网页爬取,提取所需数据。

2401_82631917的博客 1531

【内网vscode使用python及playwright】

内网的版本号一般比较老,不会是最新的,比如1.78的版本,但是我们本地下载的默认是最新的,比如目前可能是1.97。4、pip install --no-index --find-links=<本地包存储目录> -r requirements.txt。或者用下面这个地址下载对应的.vsix文件,如下,可以下载2023.8.0的python插件的.vsix文件。3、将以上两步文件传到内网,放到内网的python项目根目录下,内网的python项目也要有对应的虚拟环境。

qq_36398385的博客 1346

python使用playwright学习笔记-安装使用

本次学习内容以chrome浏览器为例,后续不在赘述。

study__py的博客 840

Python + Playwright:让测试更快速执行的几种优化策略

随着项目迭代,自动化测试套件的规模和复杂性会持续提升。测试执行时间越来越长了。最初几分钟就能完成的测试,变成需要几十分钟甚至几小时才能跑完。这种效率的下降,直接拖慢整个 CI/CD 流程,使得团队无法快速获得质量反馈,严重制约了自动化测试应有的价值。所以,本专栏的核心目标,不仅仅是介绍一些零散的优化技巧,更重要的是呈现一套体系化的优化思维框架,并辅以具体、实用的操作指导。

blues_C的博客 983

python使用playwright学习笔记-元素定位

元素定位是UI自动化核心内容,与传统的selenium相比,最大的区别在于selenium是协议的单向的,只负责做而不等待响应,因此需要结合强制等待,隐式等待和显示等待来判定,playwright则有自动等待机制,即做的时候还要等待响应,例如点击操作时,会判定元素是否可点击交互通过find_element()方法获取的元素进行第一次点击时,正常执行,刷新页面后再次点击报错,因为dom元素重新加载,element是之前的dom元素对象。

study__py的博客 944

最近爆火的 Ontology 本体是什么?一文看懂基础概念 + 落地实操

1993 Tom Gruber原版定义:本体是对领域概念化模型的显式形式化规范。1998 Studer完善通用定义:本体是共享、明确、形式化的领域概念模型规范。大白话翻译:本体就是机器能看懂的行业词典+业务规则手册。数据库只管存数据,本体只管定规则,知识图谱是规则+数据结合体。区别于普通开源本体工具,这款国产商用本体平台核心优势:业务沙盘推演、可控业务数据写回、全链路字段级数据血缘审计,适配企业生产级业务落地。

驽马不舍 366

GD32F105RBT6 keil工程模板

创建GD32F105RBT6的keil初始基础工程,未来的所有外设驱动都是基于这个基础工程进行扩展。

RMDYBW的博客 1927

Python3 + Playwright 学习笔记(一)-- 学习目录、Playwright介绍

地址如下: 官方GitHub仓库:https://github.com/miyakogi/pyppeteer. 官方API地址:https://miyakogi.github.io/pyppeteer/. 学习笔记入口:https://blog.youkuaiyun.com/qupan1993/article/details/85371556. ...

莲君子的博客 319

ArchLinux下用Wine运行钉钉全攻略:从字体配置到中文输入法避坑

本文详细介绍了在ArchLinux系统上使用Wine运行钉钉的完整配置流程。从最新的WoW64架构环境准备、中文字体配置与DPI优化,到钉钉安装、关键系统库替换,再到解决中文输入法失效等核心难题,提供了实战避坑指南。旨在帮助Linux用户在企业办公场景下,获得接近原生的稳定使用体验。

alice7model的博客 588

python使用playwright学习笔记-鼠标拖拽

相比于selenium使用ActionChains类型进行鼠标的操作,playwright可直接在page对象使用鼠标操作。

study__py的博客 1323

告别第三方应用!用Android原生API搭建Miracast投屏接收器

本文深入探讨如何利用Android原生API开发Miracast接收器,绕过第三方依赖,实现高效的屏幕共享。通过Wi-Fi P2P直连、反射调用隐藏API和RTSP会话协商等核心技术,为开发者提供了一套完整的Miracast接收端解决方案,适用于多屏协同场景。

weixin_29174141的博客 392

从隐私保护到生命守护:CPD技术中的传感器选择与权衡

本文探讨了智能座舱中儿童存在检测(CPD)技术的传感器选择与隐私保护平衡策略。通过分析毫米波雷达、UWB等先进技术的性能与隐私风险,揭示了如何在确保儿童安全的同时保护用户隐私。文章还展望了CPD技术与座舱生态系统的未来融合趋势,为汽车安全领域提供了重要参考。

weixin_29159441的博客 301

python使用playwright学习笔记-元素操作

locator()可以对元素进行定位,那么有哪些常用的对元素进行操作的方法呢?

study__py的博客 965

12、多端神经形态晶体管:原理、应用与算法探索

本文综述了多端神经形态晶体管的原理、应用与算法探索。从神经元MOS晶体管的发展到基于电解质栅极晶体管(EGT)的新型器件设计,系统阐述了其在低电压、多功能逻辑运算和突触行为模拟方面的优势。重点介绍了其在化学生物传感器(如多巴胺和pH检测)中的高灵敏度应用,以及在树突整合、时空总和、动态逻辑和神经元算术等树突算法中的实现。文章还总结了该类器件在神经形态计算、智能传感等领域的广阔前景,并分析了当前面临的材料工艺、理论建模与系统集成挑战,展望了未来发展方向。

delta的博客 143

Python Playwright 基本使用(步骤详细)

Playwright 官方安装文档、Python 编程技术-安装文档。Playwright是由微软公司2020年初发布的新一代自动化测试工具,相较于目前最常用的Selenium,它仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作。作为针对Python语言纯自动化的工具,在回归测试中可更快的实现自动化。Playwright需要版本。推荐:Python 使用 pyenv 多版本管理。Playwright 最详细使用教程,这篇文章使用细节介绍的非常好。

卡尔特斯 1万+

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法 在Windows的搜索框中输入Windows安全中心,搜索到后将其打开 点击病毒和威胁防护将鼠标移动到Microsoft Defender防病毒选项处,将定期扫描打开 下滑找到管理设置 先关闭篡改防护,再点击添加或删除排除项 先点击添加排除项,再点击文件,选择报出异常的文件,将其添加到排除项中,过程中会存在跳框确认,皆点击确定,完成后就可以运行报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件异常的文件

123 2万+

吉林大学数据库期末考试试卷讲解

给出几套期末真题及解析,给出复习建议。

一杯水果茶!足矣~ 3142

Playwright + Python爬虫

之前系统的学习过selenium爬虫的框架,其实对于绝大多数情况下基本上已经足够用了。但是最近发现了又一款爬虫神器Playwright,为什么说是神器,总的来说有以下特点:以上是我亲身体会之后自己总结的,可不是去网上扒拉的。废话不多说,让我们一起感受playwright的强大吧!其实就是一个python的一个类库而已,所以使用命令安装即可。 安装Playwright后,可以使用命令,会自动安装chromium、firefox、webkit等三款浏览器以及对应的驱动包。当然这个过程比较漫长,因为安装包比较大,

右先生、的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python安装playwright

playwright安装: python为3.7以上版本 如果没安装python或版本过低,可以去官网下载 python官网链接 安装playwright及Chromium、Firefox和WebKit的浏览器二进制文件 pip安装 pip install --upgrade pip pip install playwright playwright install conda安装 conda config --add channels conda-forge conda config --add cha

qq_43192617的博客 4391

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Playwright-python 教程

安装 pip install playwright-i https: //mirrors.aliyun.com/pypi/simple/ 使用阿里源,下载速度快一点。 python -m playwright install 安装chromium、frefox、webkit。 代码样例 打开百度页面: 同步API: from playwright import sync_playwright with sync_playwright() as p: # 可以选择chromium、firefox

天下任我行 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python+Playwright(Nuitka、Pyinstaller打包)

nuitka, pyinstaller打包playwright/selenium

xiaohouzi112233的博客 7727

使用 Playwright 进行 Python 爬虫

使用 Playwright 进行 Python 爬虫:深入掌握 Locator 和其他属性

一次次探索代码无限可能的旅程,专注于前端、后端、服务器及AI大模型的分享和交流。与我一起踏上这段无尽的技术之旅吧! 1821
上一篇: pip install使用国内镜像源
下一篇: 【Pytest】笔记
Lucifer__hell
博客等级 码龄8年 53粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值