首页 > 其他分享 >Playwright——快速入门(初章)

Playwright——快速入门(初章)

时间:2024-11-12 09:46:02浏览次数:3  
标签:playwright 浏览器 入门 locator Playwright 初章 测试 page

Playwright:引领自动化测试的未来

在数字化时代,Web应用的复杂性和用户期望的提高对软件测试提出了更高的要求。微软开发的Playwright,作为一个创新的自动化测试框架,正以其卓越的性能和全面的浏览器支持,重新定义Web自动化测试的标准。

什么是Playwright?

Playwright是一个跨浏览器、跨平台、跨语言的自动化测试工具,它支持Chromium、WebKit和Firefox等主流浏览器,能够在Windows、Linux和macOS上运行。Playwright以其简洁的API和强大的功能,允许开发者在不同的浏览器和平台上进行一致的自动化测试。

Playwright的核心优势

  • 跨浏览器测试:Playwright支持所有现代渲染引擎,这意味着开发者可以在一个统一的框架下,对不同浏览器进行测试,无需为每个浏览器编写特定的测试代码。
  • 高性能与异步执行:与传统的Selenium相比,Playwright基于异步实现,提供了更快的测试执行速度和更流畅的用户体验。
  • 无需浏览器驱动:Playwright内置了对浏览器的支持,无需额外下载和配置浏览器驱动,简化了测试环境的搭建过程。
  • 自动等待机制:Playwright智能地等待元素可操作后再执行操作,减少了因元素未加载完成而导致的测试失败。
  • 丰富的API和调试工具:Playwright提供了全面的API支持,包括页面导航、元素交互、表单提交和网络请求等,同时配备了强大的调试工具,如代码生成器、Playwright
    Inspector和跟踪查看器,帮助开发者高效地编写和调试测试脚本。
  • 完全隔离的测试环境:每个测试都在独立的浏览器上下文中运行,确保了测试之间的完全隔离,同时支持保存和重用身份验证状态,提高了测试的效率和准确性。

Playwright的应用场景

Playwright的应用场景非常广泛,包括但不限于:

  • 跨浏览器测试:确保应用在不同浏览器上的一致性。
  • 自动化测试:与测试框架如Jest、Mocha集成,实现持续集成和自动化测试。
  • 端到端测试:验证关键用户流程,确保系统的整体质量。
  • 性能测试:分析网页在不同浏览器下的性能,查找性能瓶颈。
  • 移动端测试:在真实移动设备上运行测试,支持Android和iOS设备。

安装 playwright 客户端库

输入以下代码:

pip install playwright

显示以下安装过程:

Collecting playwright
  Downloading playwright-1.39.0-py3-none-win_amd64.whl (29.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 29.2/29.2 MB 238.5 kB/s eta 0:00:00
Collecting greenlet==3.0.0 (from playwright)
  Downloading greenlet-3.0.0-cp311-cp311-win_amd64.whl (288 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 288.2/288.2 kB 378.1 kB/s eta 0:00:00
Collecting pyee==11.0.1 (from playwright)
  Downloading pyee-11.0.1-py3-none-any.whl (15 kB)
Collecting typing-extensions (from pyee==11.0.1->playwright)
  Downloading typing_extensions-4.8.0-py3-none-any.whl (31 kB)
Installing collected packages: typing-extensions, greenlet, pyee, playwright

Successfully installed greenlet-3.0.0 playwright-1.39.0 pyee-11.0.1 typing-extensions-4.8.0

安装playwright浏览器

playwright 项目默认使用自己编译好的几种浏览器,比如 chromium, firefox, webkit,这些浏览器是通过开源项目编译的。
安装代码如下:

playwright install

简单示例

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()

可以选择其它浏览器:

# 启动firefox浏览器
browser = p.firefox.launch(headless=False)

# 启动webkit浏览器
browser = p.webkit.launch(headless=False)

可以使用 with语句,不需要调用 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()

界面等待

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

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

page.wait_for_timeout(1000)

自动化代码助手

Playwright 内置了 代码助手 的功能,可以帮我们产生“自动化代码”输入如下命令,即可启动代码助手:

playwright codegen

注意:这个只能作为助手,它主要是记录人对页面的输入,并不能取代人自己写代码,特别是那些获取页面上信息的代码。
比如,打印标题栏,就没法自动化生成。

print(page.title())

还有这些,获取所有搜索内容的代码,也无法自动化生成。

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

跟踪功能

Playwright 有个特色功能: 跟踪(tracing)

启用跟踪功能后, 可以在执行自动化后,通过记录的跟踪数据文件, 回看自动化过程中的每个细节,下面的的代码进行了自动化搜索股票,并打开跟踪功能,保存跟踪数据文件为 trace.zip。

from playwright.sync_api import sync_playwright

p = sync_playwright().start()
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()
p.stop()

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

  • 直接访问 trace.playwright.dev 这个网站,上传跟踪文件。

  • 执行命令 playwright show-trace trace.zip

标签:playwright,浏览器,入门,locator,Playwright,初章,测试,page
From: https://blog.csdn.net/2202_76035290/article/details/143690289

相关文章

  • 使用 C# 入门深度学习:Pytorch 基础
    教程名称:使用C#入门深度学习作者:痴者工良地址:https://torch.whuanle.cn1.2Pytorch基础本文内容介绍Pytorcn的基础API,主要是数组的创建方式和运算方式,由于相关内容跟Numpy比较相似,并且Numpy类型可以转torch.Tensor,因此对Numpy感兴趣的读者可以参考笔者的其它文......
  • C++入门基础(四)
    目录引用的应用做参数做返回值野引用扩展传值、传引用效率比较引用和指针的区别C++对比C语言实现顺序表引用的应用做参数 #include<iostream> usingnamespacestd; voidSwap(int&a,int&b) { inttemp=a; a=b; b=temp; } intmain() { in......
  • c语言入门第六天输入函数
    一:字符输入函数a:字符输入函数格式为getchar();b:功能:从键盘输入一字符c:返回值:正常,返回从键盘输入的代码值,出错或结束返回-1d:代码展示输出单一字符2:格式输入函数a:格式:scanf("格式控制符",地址表)b:功能:按指定格式从键盘读入数据,存入地址表指定存储单元中,并按回......
  • 【Playwright + Python】系列(九)Playwright 调用 Chrome 插件,小白也能事半功倍
    哈喽,大家好,我是六哥!今天我来给大家分享一下如何使用playwight调用chrome插件,面向对象为功能测试及零基础小白,我尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先收藏,以免后面找不到。......
  • 成为一名Web安全工程师很难吗?(非常详细),零基础入门到精通,看这一篇就够了
    前言Web安全渗透:主要是对Web应用程序和相应的软硬件设备配置的安全性进行测试。通过模拟入侵者的手段可以在授权的情况下进行流量攻击、信息收集、文件提取等敏感行为,最终输出测试报告,从而准确修复这一系列漏洞。主要作用于各个企业网站、业务系统、移动APP、WiFi热点、Do......
  • 网络安全协议系列(非常详细),零基础入门到精通,看这一篇就够了
    文章目录一、安全协议的引入1.TCP/IP协议族中普通协议的安全缺陷1.信息泄露2.信息篡改3.身份伪装4.行为否认2.网络安全需求二、网络安全协议的定义三、构建网络安全协议所需的组件1.加密与解密2.消息摘要3.消息验证码4.数字签名5.密钥管理1.建立共享密钥2.公钥管理四......
  • APR协议及防御(非常详细),零基础入门到精通,看这一篇就够了
    文章目录ARP广播与广播域概述ARP协议(网络层)ARP出现原因原理:ARP攻击方式:ARP防御1️⃣网络安全/黑客零基础入门①学习路线②路线对应学习视频2️⃣视频配套资料&国内外网安书籍、文档①文档和书籍资料②网络安全/黑客学习视频3️⃣网络安全源码合集+工具包4️⃣网络安全......
  • 【前端】Typescript从入门到进阶
    以下是TypeScript的常用知识点总结,涵盖了从基础到入门的内容,并配有代码示例:1.TypeScript基础 1.1安装和配置安装TypeScript并初始化配置文件:npminstall-gtypescripttsc--init 1.2基本类型TypeScript提供的基本类型有`number`、`string`、`boolean`、`......
  • Python小白学习教程从入门到入坑------第二十九课 访问模式(语法进阶)
    目录一、访问模式1.1 r1.2 w1.3 + 1.3.1r+1.3.2w+1.3.3a+1.4a一、访问模式模式可做操作若文件不存在是否覆盖r只能读报错-r+可读可写报错是w只能写创建是w+可读可写创建是a只能写创建否,追加写a+可读可写创建否,追加写1.1 rr:只读模式(默认模式),文件......
  • Python小白学习教程从入门到入坑------第三十课 文件定位操作(语法进阶)
    一、文件指针python中严格来说没有指针这个说法,但有指针这个用法的体现。指针概念常用于c语言、c++语言中在Python的文件操作中,文件指针(也称为文件游标或文件句柄的位置)是一个内部标记,它指示了当前文件操作的读写位置,文件指针在打开文件时初始化,并随着文件的读写操作而移动......