新一代自动化测试神器Playwright

科技资讯 投稿 6500 0 评论

新一代自动化测试神器Playwright

作者:测试蔡坨坨


你好,我是测试蔡坨坨。

    2006年,Selenium 1.0发布

    同年,Google工程师Simon Stewart发起了一个名为WebDriver的项目,它也是一个自动化测试工具,彼时刚刚起步,后来它也成为Selenium的竞品之一。

  • 2009年,Selenium 2.0发布

    Web浏览器和我们的脚本之间有一个WebDriver,通过WebDriver协议去驱动并操作浏览器(具体实现+源码解析可参考往期文章「Selenium底层逻辑源码解析」)。

    Selenium 2.x(WebDriver)真正兴起是在2014年开始,到2016年左右成为Web自动化最热门的框架。几乎谈及Web自动化,那就是Selenium。它不仅在Web自动化测试领域很火,在爬虫领域也是非常热门。

  • 2016年,Selenium 3.0发布

    完全移除了Selenium RC;WebDriver暴露一个供浏览器接入的API,通过各浏览器厂商提供的Driver来接入;将内置的Firefox Driver剔除;支持Firefox通过GRCKO Driver来接入Selenium;通过Apple提供的Safari Driver来接入Safari;通过Edge Driver支持IE接入。

  • 2021年,Selenium 4.0发布

    除此之外,Selenium 4还做了一些其他的改动,可参考往期文章「Selenium 4 有哪些不一样?」。

2020年左右出现的Cypress、TestCafe、Puppeteer,在技术雷达中被誉为后Selenium时代Web UI自动化的三驾马车。但是由于这三个框架都是基于JavaScript开发的,所以就需要测试人员熟悉JavaScript,并且都不支持Python,所以使用率并没有很高。

Playwright简介

Playwright是一款定位于端到端(End-to-End,端到端就是用于测试整个应用程序的流程是否符合预期的测试技术,模拟用户真实使用场景,为实现这一目标,该系统通常被视为黑盒子,也就是所谓的黑盒测试,主要通过GUI和API等公共接口对其进行操作)的测试工具。

既然在市面上已经有非常成熟好用的Selenium框架,并且在持续的更新,社群也十分活跃,微软为什么还要整一个额外的自动化测试工具出来呢?

    跨浏览器

  • 自动等待

  • Web优先断言

  • 追踪

  • 并行执行

  • 强大的工具集

Playwright初体验

以Python语言为例,编写第一个Playwright脚本。

安装playwright
pip install playwright
安装内置浏览器
playwright install

由于安装的内容比较多,所以这一步需要花费一点时间。

第一个Playwright脚本
1. 使用with方式启动
# author: 测试蔡坨坨
# datetime: 2023/4/8 2:18
# function: 第一个playwright脚本,使用with写法

from playwright.sync_api import sync_playwright, expect


def run(playwright:
    chromium = playwright.chromium  # or "firefox" or "webkit".
    browser = chromium.launch(headless=False  # headless表示是否使用无头浏览器(也就是无GUI模式)
    page = browser.new_page(
    page.goto("https://caituotuo.top"
    # other actions...
    print(page.title(
    browser.close(


with sync_playwright( as playwright:
    run(playwright

# 这里使用的是with方法,Python中的with方法可以很方便处理一些需要提前设置,事后需要清理的工作
# playwright正好有上下文处理,所以使用with写法会使代码更加简洁
# 比如:
# with open("/caituotuo.txt" as f:
#     f.read(
#
# 非with方式可能存在问题:1.可能忘记关闭文件句柄 2.文件读取数据时发生异常,但是没有进行任何处理
# f = open("/caituotuo.txt"
# data = f.read(
# f.close(
2. 使用start(方式启动
# author: 测试蔡坨坨
# datetime: 2023/4/8 2:20
# function: 使用start(写法,直接实例化playwright同步方法

from playwright.sync_api import sync_playwright

playwright = sync_playwright(.start(
chromium = playwright.chromium  # or "firefox" or "webkit".
browser = chromium.launch(headless=False  # headless表示是否使用无头浏览器(也就是无GUI模式)
page = browser.new_page(
page.goto("https://caituotuo.top"
# other actions...
print(page.title(
browser.close(

总结

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

最重要的是要行动起来,多写多练,日积月累,自然会如鱼得水,真正把自动化测试在企业中落地,带来对应的效率和质量保障方面的提升。

编程笔记 » 新一代自动化测试神器Playwright

赞同 (35) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽