前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【python自动化】Playwright基础教程(二)快速入门

【python自动化】Playwright基础教程(二)快速入门

作者头像
梦无矶小仔
发布2023-09-08 17:11:04
2.4K0
发布2023-09-08 17:11:04
举报

本文使用的playwright版本为1.37.0 官方文档:https://playwright.dev/python/docs/ 非常建议大家对playwright感兴趣的可以直接阅读官方文档,真的非常详细

前言

之前写过一篇playwright教程,但那个时候还是属于学习阶段。

目前已经将公司selenium框架构建的web ui自动化项目使用playwright进行了重构,个人对playwright的使用也比之前更加熟悉,在此重新汇总一下,后续如果应用了本文中没有提及的知识,会继续更新这个系列。

这个系列主要讲解知识点,不进行实战,实战的笔记会单独出,之前也更新过几篇都是在企业实际落地的:

selenium&playwright获取网站Authorization鉴权实现伪装requests请求

playwright连接已有浏览器操作

【python自动化】playwright长截图&切换标签页&JS注入实战

很多小伙伴问过我selenium和playwright的区别,这里请移步搜索引擎,我不想写。

安装

1、直接使用playwright

代码语言:javascript
复制
pip install playwright

2、使用官方提供的pytest插件版本(可选)

代码语言:javascript
复制
pip install pytest-playwright

这两种的区别:

  • pytest版本支持所有pytest功能,并且提供相关的断言测试方法
  • pytest版本和pytest有比较强的关联性,需要对pytest框架有一定的了解
  • 直接安装的版本更适合纯新手学习、应用、实战

3、安装Chromium、Firefox、WebKit等浏览器的驱动文件(内置浏览器)

代码语言:javascript
复制
playwright install

这一步下载会比较慢如果你不能访问国外网站的话。

这些内容最终会下载到C:\Users\xiaozai\AppData\Local\ms-playwright文件夹下,也可以指定文件夹操作,详细可以去查看playwright的命令行参数,这里建议默认。

快速入门&脚本录制

以下脚本为简单启动一个浏览器并进入对应网址。除了注释,我后面还会有逐行代码解析。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
'''
@Time : 2023/8/7 11:49
@Email : Lvan826199@163.com
@公众号 : 梦无矶的测试开发之路
@File : playwright介绍.py
'''
__author__ = "梦无矶小仔"
# 安装下载
# pip install playwright
# 安装驱动
# playwright install
# 同步模式
from playwright.sync_api import sync_playwright
def pw_test():
    # 使用同步的方式启动playwright
    playwright = sync_playwright().start()
    # 启动一个chromium内核的浏览器,headless默认为True表示无头模式,不显示浏览器
    browser = playwright.chromium.launch(headless=False)
    # 新建一个浏览器上下文
    context = browser.new_context()
    # 创建一个新的页面(_blank)
    page = context.new_page()
    # 页面需要进入哪个网址
    page.goto("https://pingcode.com/signin")
    # 类似断点,会有一个playwright窗口,让你进行相关操作(如元素定位,录制)
    page.pause()
    # 设置最大等待超时时间(超过该时间则会报错 )
    page.wait_for_timeout(3000)

if __name__ == '__main__':
    pw_test()

代码逐步解析

首先,我使用的是同步模式,入门学习不建议直接学异步模式,不要有这么多好奇心,先入门再说。

  1. from playwright.sync_api import sync_playwright:从playwright.sync_api模块中导入sync_playwright函数。这个函数用于同步启动Playwright。
  2. def pw_test()::定义了一个名为pw_test的函数。
  3. playwright = sync_playwright().start():使用同步方式启动Playwright库,并将返回的playwright对象赋值给变量playwright。这个playwright对象可以用来启动浏览器和创建页面等操作。
  4. browser = playwright.chromium.launch(headless=False):通过playwright对象的chromium.launch()方法启动一个Chromium内核的浏览器实例。参数headless=False表示以非无头模式运行,这意味着浏览器界面会显示出来。
  5. context = browser.new_context():在浏览器实例上创建一个新的上下文(Context)对象。上下文相当于一个浏览器窗口,用于隔离各个页面之间的环境。
  6. page = context.new_page():在上下文中创建一个新的页面(Page)对象。每个页面可以看作是一个浏览器标签页。
  7. page.goto("https://pingcode.com/signin"):使用page对象的goto()方法导航到指定的网址。
  8. page.pause():暂停代码的执行,显示Playwright窗口,以便进行相关操作,如元素定位或录制操作。
  9. page.wait_for_timeout(3000):设置一个最大的等待超时时间,以毫秒为单位。这里表示等待3秒,你可以理解为是time.sleep(3)

对于page.pause(),代码运行到此处,你会发现浏览器旁边会弹出如下界面,这时候你就可以进行录制操作,点击Record按钮,你操作页面的时候这里就会自动帮你生成代码。

你可以通过这种方式快速了解playwright代码的编写方式,如定位、输入、点击等操作。

点击小窗口的Record按钮,可以进入录屏模式,进入录屏模式后你看看到浏览器的元素定位等功能,如下图所示。

此时,我手动输入了一些内容,这时候录制模式已经自动帮我转化为了代码。

我们根据录制的代码就可以开始模仿着写了。

简单登录操作

代码语言:javascript
复制
from playwright.sync_api import sync_playwright


def pw_02_test():
    playwright = sync_playwright().start()
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://pingcode.com/signin")
    page.get_by_placeholder("请输入手机号/邮箱").click()
    page.get_by_placeholder("请输入手机号/邮箱").fill("826199528@qq.com")
    page.get_by_placeholder("请输入登录密码").click()
    page.get_by_placeholder("请输入登录密码").fill("mengwuji666")
    page.get_by_role("button",name="登录").click()
    # # ---------------------
    # context.close()
    # browser.close()

if __name__ == '__main__':
    pw_02_test()

这时候启动代码就会发现可以登录成功。**(大家自己注册账号,别用我的别用我的别用我的)**

这里面涉及到了一些定位方式,输入,点击等操作,我们下一节再一步步进行讲解。(有很多小伙伴反馈我一篇文章太长,看一点开头就不想看了,喜欢看短篇小知识点容易吸收,那就满足大家~)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 梦无矶的测试开发之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 安装
  • 快速入门&脚本录制
    • 代码逐步解析
    • 简单登录操作
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档