PlayWright是由业界大佬微软(Microsoft)开源的端到端 Web 测试和自动化库,可谓是大厂背书,功能满格,虽然作为无头浏览器,该框架的主要作用是测试 Web 应用,但事实上,无头浏览器更多的是用于 Web 抓取目的,也就是爬虫。

PlayWright的安装和使用
pip3 install playwright
安装驱动

playwright可以安装支持的浏览器。运行不带参数的命令将安装默认浏览器

playwright install

可以通过提供参数来安装特定的浏览器

playwright install webkit

查看所有支持的浏览器

playwright install --help

默认会下载chromium内核,firefox以及webkit驱动

demo1,到该页面截图
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://cnblogs.com/luckyletop")
page.screenshot(path="example.png")
browser.close()
playwroght支持api的俩种变体:同步和异步
import asyncio
from playwright.async_api import async_playwright async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("http://cnblogs.com/luckyletop")
print(await page.title())
await browser.close() asyncio.run(main())

定位器

定位器是playwright自动等待和重试能力的核心部分。定位器代表了一种随时在页面上查找元素的方法。

page.get_by_role() 通过显式和隐式可访问性属性进行定位
page.get_by_text() 按文本内容定位
page.get_by_label()通过关联标签的文本定位表单控件
page.get_by_placeholder() 通过占位符定位输入
page.get_by_alt_text() 通过替代文本来定位元素 (一般指图像 具有alt描述图像的属性v)
page.get_by_title()通过元素的标题属性来定位元素
page.get_by_test_id()根据元素的data_testid属性定位元素
page.locator('css=button').click() #通过css
page.locator('xpath=//button').click() #通过xpath

断言

Assertion Description
expect(locator).to_be_checked() Checkbox is checked 复选框被选中
expect(locator).to_be_disabled() Element is disabled 元素被禁用
expect(locator).to_be_editable() Element is editable 元素可编辑
expect(locator).to_be_empty() Container is empty 容器是空的
expect(locator).to_be_enabled() Element is enabled 元素已启用
expect(locator).to_be_focused() Element is focused 元素已聚焦
expect(locator).to_be_hidden() Element is not visible 元素不可见
expect(locator).to_be_visible() Element is visible 元素可见
expect(locator).to_contain_text() Element contains text 元素包含文本
expect(locator).to_have_attribute() Element has a DOM attribute 元素具有DOM属性
expect(locator).to_have_class() Element has a class property 元素具有类属性
expect(locator).to_have_count() List has exact number of children
expect(locator).to_have_css() Element has CSS property 列表具有css
expect(locator).to_have_id() Element has an ID 元素有一个id
expect(locator).to_have_js_property() Element has a JavaScript property
expect(locator).to_have_text() Element matches text 元素与文本匹配
expect(locator).to_have_value() Input has a value
expect(locator).to_have_values() Select has options selected
expect(page).to_have_title() Page has a title 页面有标题
expect(page).to_have_url() Page has a URL 页面有一个url
expect(response).to_be_ok() Response has an OK status 响应状态为ok

pytest-playwright

官方的pytest-playwright插件可以编写端到端的是。塔提供上下文隔离,开箱即用地在多个浏览器配置上运行。它继承了pytest框架,以及支持playwright的一些基础使用

pip install pytest-playwright

安装这个插件后,无需自定义fixture,直接使用内置的前置page即可

import re
from playwright.sync_api import Page, expect def test_has_title(page: Page):
page.goto("https://cnblogs.com/luckyletop") # Expect a title "to contain" a substring.
expect(page).to_have_title(re.compile("乐乐")) #说明:直接在用例函数里声明了一个page,格式:def test_has_title(page: Page),即可跳转访问页面
全局配置base_url
pip install pytest-base-url
pytest.ini

[pytest]
base_url = https://cnblogs.com
import re
from playwright.sync_api import Page, expect def test_has_title(page: Page,base_url):
page.goto(base_url+'/luckyletop') #说明:配置后,可直接获取到base_url的,前提是先安装插件,然后在ptest.ini文件里配置

PlayWright安装及使用的更多相关文章

  1. 【web自动化测试】playwright安装失败怎么办

    在安装中,如果没有输入 playwright install, 则不会安装浏览器,运行 playwright codegen 时会报浏览器找不到的错误: "chromium" br ...

  2. 【web自动化测试】Playwright快速入门,5分钟上手

    我喜欢Playwright! 这是微软开源的一款非常强大的自动化工具,再过几年,他很有可能取代Selenium在浏览器自动化的通知地位.使用过一段时间,我没有找到很好的中文资料可以参考,导致很多问题无 ...

  3. playwright结合pytest使用案例

    playwright简介 不愧是宇宙最强,它也是目前为止对ui自动化领域里最好的一个库,在selenium之上,还有对应的异步机制,其他见百度不便在此详叙. 本篇经典案例是对我司的veer产品做ui自 ...

  4. 微软开源 Python 自动化神器 Playwright

    背景 逛博客时候突然看到 Playwright web自动化,感觉很有意思,就翻看了很多博客,简单记录一下. 简介 Playwright是一个强大的Python库,仅用一个API即可自动执行Chrom ...

  5. 新一代自动化测试神器Playwright

    转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/4bedb73c.html 你好,我是测试蔡坨坨. 说到WebUI自动化测试,首当其冲的当属Selenium,在很长的一段时间 ...

  6. 实例讲解Playwright(一)

    实例讲解Playwright(一) 网址 说明 https://playwright.dev/ 官网首页 https://playwright.dev/python/docs/intro Python ...

  7. 微软自动化测试工具palywright

    前言 我们介绍许多e2e的自动化测试工具 一类是基于 Selenium 的测试框架: robot framework gauge SeleniumBase seldom(我自己维护的) 另一类是基于J ...

  8. playwright自动化项目搭建

    这是关于playwright系列介绍的最后一篇.搭建基于 playwright 的自动化项目. GitHub地址: https://github.com/defnngj/playwright-pro ...

  9. 探索微软开源Python自动化神器Playwright

    相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也 ...

  10. 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制

    一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...

随机推荐

  1. .net core 到底行不行!超高稳定性和性能的客服系统:性能实测

    业余时间用 .net core 写了一个升讯威在线客服系统.并在博客园写了一个系列的文章,介绍了这个开发过程. 我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷 ...

  2. 【PySide6】QChart笔记(三)—— QPieSeries的使用

    一.QPieSeries简介 1. 官方描述 https://doc.qt.io/qtforpython-6/PySide6/QtCharts/QPieSeries.html 一个饼图序列(QPieS ...

  3. 解密Spring Cloud微服务调用:如何轻松获取请求目标方的IP和端口

    公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 目的 Spring Cloud 线上微服务实例都是2个起步,如果出问题后,在没有ELK等日志分析平台,如何确定调用到了目标 ...

  4. 有一种浪漫,叫接触Linux

    ​大家好,我是五月. 嵌入式开发 嵌入式开发产品必须依赖硬件和软件. 硬件一般使用51单片机,STM32.ARM,做成的产品以平板,手机,智能机器人,智能小车居多. 软件用的当然是以linux系统为蓝 ...

  5. 深入了解MD5加密技术及其应用与局限

    一.MD5简介 MD5(Message Digest Algorithm 5)是一种单向散列函数,由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)于1991年发明.它主要用于将任 ...

  6. c#实现一个简单的管理系统报错System.Data.SqlClient.SqlException”类型的未经处理的异常在 System.Data.dll 中发生【已解决】

    很简单就是把连接数据库语句改成(local)或者"127.0.0.1" 如下 public SqlConnection connect() { string str = @&quo ...

  7. 实例讲解Python 解析JSON实现主机管理

    本文分享自华为云社区<Python 解析JSON实现主机管理>,作者: LyShark. JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易 ...

  8. [cnn]cnn训练MINST数据集demo

    [cnn]cnn训练MINST数据集demo tips: 在文件路径进入conda 输入 jupyter nbconvert --to markdown test.ipynb 将ipynb文件转化成m ...

  9. [ICPC2014WF]Sensor Network

    题目描述 A wireless sensor network consists of autonomous sensors scattered in an environment where they ...

  10. C++ Qt开发:SqlRelationalTable关联表组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍SqlRela ...