Python Playwright的使用详解

目录
  • 实战场景
  • 实战操作

实战场景

本篇博客为大家介绍一款新的自动化测试工具,效果类似 selenium,但是这个模块年轻。

模块名称为 playwright-python,微软开源的,是针对 Python 语言的纯自动化工具,可以通过 API 调用浏览器,github 地址在本文末尾。

接下来将通过 3 篇博客为大家详细介绍该 playwright-python,彻彻底底了解它。

正式开始前依旧是模块安装:

pip install playwright

该模块安装非常快,但完整体验还需要安装浏览器相关驱动,这个有点大,命令如下:

python -m playwright install

安装时注意使用国内源!

等待过程中,可以查阅输出日志,核对安装了哪些模块:

  • Downloading FFMPEG:FFMPEG;
  • Downloading Firefox 104.0:火狐浏览器驱动;
  • Downloading Chromium :谷歌浏览器驱动;
  • Downloading Webkit 16.0 :Webkit 浏览器驱动。

实战操作

第一次实战操作,先从不写代码开始,通过下述命令启动浏览器,然后【录制】我们的操作过程。

python -m playwright codegen

运行代码之后,弹出默认浏览器和一个代码录制展示框,具体如下所示:

下面就可以在左侧的浏览器窗口中进行操作,然后观察右侧自动生成的代码段。

在地址栏输入 baidu.com 跳转到百度首页,然后输入 航天员,点击搜索按钮,生成的代码如下所示。

将生成的代码复制到开发工具中,直接运行就可以得到刚刚相同的操作。

from playwright.sync_api import Playwright, sync_playwright, expect

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    # Open new page
    page = context.new_page()
    # Go to https://www.baidu.com/
    page.goto("https://www.baidu.com/")
    # Click input[name="wd"]
    page.locator("input[name=\"wd\"]").click()
    # Fill input[name="wd"]
    page.locator("input[name=\"wd\"]").fill("航天员")
    # Press Enter
    page.locator("input[name=\"wd\"]").press("Enter")
    page.wait_for_url(
        "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E8%88%AA%E5%A4%A9%E5%91%98&fenlei=256&rsv_pq=0xfde7decb0011bfe6&rsv_t=3a67vLT%2Buti4VKw0mDppSrydbnq6CGsyOVNNxN%2F39naR6lYvxacuqvbYKRs0&rqlang=en&rsv_enter=1&rsv_dl=tb&rsv_sug3=24&rsv_sug1=24&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=%25E8%2588%25AA%25E5%25A4%25A9%25E5%2591%2598&rsp=5&inputT=5824&rsv_sug4=6786&rsv_jmp=fail")
    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

接下来我们分析一下其生成的代码含义。

from playwright.sync_api import Playwright, sync_playwright

playwright.sync_api 模块导入 Playwrightsync_playwright,看到关键字 sync,可以猜测这是一个同步操作,那与之对应的,也是未来我们要对比学习的,就是异步接口相关内容,这里先埋下一个伏笔,下篇博客在进行讨论。

browser = playwright.chromium.launch(headless=False)

初始化一个谷歌浏览器对象,并且不是无头浏览器,即在桌面打开浏览器窗口。launch() 方法包含很多参数,常用的有以下内容:

  • headless:是否为无头浏览器,即是否显示浏览器窗口,默认为不显示;
  • channel:浏览器版本,"chrome", "chrome-beta", "chrome-dev", "chrome-canary";
  • proxy:代理设置;
  • timeout:超时时间,默认 30s。
context = browser.new_context()
page = context.new_page()

打开一个新浏览器,创建一个新页面,其中 browser.new_context() 的参数都是与浏览器配置相关的内容,实践的时候需要特别设置的在这里设置,例如下述参数:

  • user_agent:UA 代理;
  • viewport:页面大小,比例,例 1024*768;
  • offline:离线模式加载。
page.goto("https://www.baidu.com/")
page.locator("input[name=\"wd\"]").click()
……
page.wait_for_url(……)
  • goto() :地址跳转,即浏览器跳转;
  • locator():定位元素;
  • wait_for_url():等待页面加载完毕。

本文末尾重点介绍一下 goto() 相关内容,剩余函数下篇博客继续说明。 goto() 函数的重要参数:

  • url:跳转地址,必须包含协议,例如 http:// 或者 https://
  • referer:请求头中的 referer 参数;
  • timeout:最大操作时间(毫秒),默认为 30 秒;
  • wait_until:默认操作成功时,执行的内容,还有几个事件,分别是 domcontentloadednetworkidlecommit

项目开源地址:https://github.com/microsoft/playwright-python

官方手册:https://playwright.dev/python/docs/intro

到此这篇关于Python Playwright的使用详解的文章就介绍到这了,更多相关Python Playwright内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 新一代爬虫利器Python Playwright详解

    目录 安装方式 特点 使用方式 代码生成 选择器 事件监听 总结 Playwright是Microsoft在2020年初开源的新一代自动化测试工具,它的功能类似于Selenium.Pyppeteer等,都可以驱动浏览器进行各种自动化操作.它的功能也非常强大,对市面上主流浏览器都提供了支持,API功能简洁又强大.虽然诞生的比较晚,但是发展得非常火热. 在Pyppeteer已经不再维护的年代,拥有Playwright这个开源工具是非常棒的选择,文档丰富,功能强大. 安装方式 conda config

  • Playwright中如何保持登录状态

    目录 引言 功能实现 结合Pytest 结合Clent-Page Object模式 引言 在编写UI自动化测试用例的时候,通常会采用每个测试用例前打开新页面重新进行登录,以减少用例间的影响,比如一个测试用例执行失败会影响到下一个测试用例的执行,或者下一个用例的开始依赖于上一个用例的结束页面.但是这种方式会使得测试用例的执行时间大幅度上升,尤其是在测试用例划分的颗粒度比较小的时候:加入一个项目中有2000个测试用例,登录操作耗时2秒,那么光耗费在登录上面的时间就有4000秒,达到一个多小时了,严重

  • Python开源自动化工具Playwright安装及介绍使用

    目录 1.Playwright介绍 2.Playwright安装 3.实操演示 微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft Edge 等,同时支持以无头模式.有头模式运行,并提供了同步.异步的 API,可以结合 Pytest 测试框架 使用,并且支持浏览器端的自动化脚本录制. 项目地址:https://github.com/microsoft/playwright-python

  • Playwright快速上手指南(入门教程)

    目录 1. 为什么选择Playwright 1.1 Playwright的优势 1.2 已知局限性 2. Playwright使用 2.1 安装 2.2 自动录制 2.3 定制化编写 2.4 网络拦截(Mock接口),示例如下: 2.6 异步执行,示例如下: 2.7 Pytest结合,示例如下: 2.8 移动端操作,示例如下: 3. 总结 Playwright是由微软公司2020年初发布的新一代自动化测试工具,相较于目前最常用的Selenium,它仅用一个API即可自动执行Chromium.Fi

  • 微软开源最强Python自动化神器Playwright(不用写一行代码)

    相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也需要一定的学习成本,对于一个纯小白来讲还是有些门槛的. 最近,微软开源了一个项目叫「playwright-python」,简直碉堡了!这个项目是针对Python语言的纯自动化工具,连代码都不用写,就能实现自动化功能. 可能你会觉得有点不可思议,但它就是这么厉害.下面我们一起看下这个神器. 1. Pl

  • Python Playwright的使用详解

    目录 实战场景 实战操作 实战场景 本篇博客为大家介绍一款新的自动化测试工具,效果类似 selenium,但是这个模块年轻. 模块名称为 playwright-python,微软开源的,是针对 Python 语言的纯自动化工具,可以通过 API 调用浏览器,github 地址在本文末尾. 接下来将通过 3 篇博客为大家详细介绍该 playwright-python,彻彻底底了解它. 正式开始前依旧是模块安装: pip install playwright 该模块安装非常快,但完整体验还需要安装浏

  • MySQL数据库设计之利用Python操作Schema方法详解

    弓在箭要射出之前,低声对箭说道,"你的自由是我的".Schema如箭,弓似Python,选择Python,是Schema最大的自由.而自由应是一个能使自己变得更好的机会. Schema是什么? 不管我们做什么应用,只要和用户输入打交道,就有一个原则--永远不要相信用户的输入数据.意味着我们要对用户输入进行严格的验证,web开发时一般输入数据都以JSON形式发送到后端API,API要对输入数据做验证.一般我都是加很多判断,各种if,导致代码很丑陋,能不能有一种方式比较优雅的验证用户数据呢

  • Python之str操作方法(详解)

    1. str.format():使用"{}"占位符格式化字符串(占位符中的索引号形式和键值对形式可以混合使用). >>> string = 'python{}, django{}, tornado{}'.format(2.7, 'web', 'tornado') # 有多少个{}占位符就有多少个值与其对应,按照顺序"填"进字符串中 >>> string 'python2.7, djangoweb, tornadotornado'

  • 基于python时间处理方法(详解)

    在处理数据和进行机器学习的时候,遇到了大量需要处理的时间序列.比如说:数据库读取的str和time的转化,还有time的差值计算.总结一下python的时间处理方面的内容. 一.字符串和时间序列的转化 time.strptime():字符串=>时间序列 time.strftime():时间序列=>字符串 import time start = "2017-01-01" end = "2017-8-12" startTime = time.strptime

  • Python探索之SocketServer详解

    SocketServer,网络通信服务器,是Python标准库中的一个模块,其作用是创建网络服务器.SocketServer模块定义了一些类来处理诸如TCP.UDP.UNIX流和UNIX数据报之上的同步网络请求. SocketServer模块处理网络请求的功能,可以通过两个主要的类来实现:一个是服务器类,一个是请求处理类. 服务器类 处理通信问题,如监听一个套接字并接收连接等: 请求处理类 处理"协议"问题,如解释到来的数据.处理数据并把数据发回给客户端等. 这种实现将服务器的实现过程

  • python学习 流程控制语句详解

    ###################### 分支语句 python3.5 ################ #代码的缩进格式很重要 建议4个空格来控制 #根据逻辑值(True,Flase)判断程序的运行方向 # Ture:表示非空的量(String,tuple元组 .list.set.dictonary),所有非零的数字 # False:0,None .空的量 #逻辑表达式 可以包含 逻辑运算符 and or not if: ##################################

  • Python 调用Java实例详解

    Python 调用Java实例详解 前言: Python 对服务器端编程不如Java 所以这方面可能要调用Java代码 前提: Linux 环境  1 安装 jpype1 安装后测试代码: from jpype import * startJVM(getDefaultJVMPath(), "-ea") java.lang.System.out.println("Hello World") shutdownJVM() 2 调用非jdk的jar包, test.jar 包

  • python 编程之twisted详解及简单实例

    python 编程之twisted详解 前言: 我不擅长写socket代码.一是用c写起来比较麻烦,二是自己平时也没有这方面的需求.等到自己真正想了解的时候,才发现自己在这方面确实有需要改进的地方.最近由于项目的原因需要写一些Python代码,才发现在python下面开发socket是一件多么爽的事情. 对于大多数socket来说,用户其实只要关注三个事件就可以了.这分别是创建.删除.和收发数据.python中的twisted库正好可以帮助我们完成这么一个目标,实用起来也不麻烦.下面的代码来自t

  • Python 文件操作的详解及实例

    Python 文件操作的详解及实例 一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧明. 白首为功名,旧山松竹老,阻归程. 欲将心事付瑶琴. 知音少,弦断有谁听. f = open('小重山') #打开文件 data=f.read()#获取文件内容 f.close() #关闭文件 注意:if in the win,hello文件是utf8保存的,打

  • Python的语言类型(详解)

    Python 是强类型的动态脚本语言 . 强类型:不允许不同类型相加 动态:不使用显示数据类型声明,且确定一个变量的类型是在第一次给它赋值的时候 脚本语言:一般也是解释型语言,运行代码只需要一个解释器,不需要编译 强类型语言和弱类型语言 1.强类型语言:使之强制数据类型定义的语言.没有强制类型转化前,不允许两种不同类型的变量相互操作.强类型定义语言是类型安全的语言,如Java.C# 和 python,比如Java中"int i = 0.0;"是无法通过编译的: 2.弱类型语言:数据类型

随机推荐