作者:测试蔡坨坨
你好,我是测试蔡坨坨。
-
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 有哪些不一样?」。
2006年,Selenium 1.0发布
同年,Google工程师Simon Stewart发起了一个名为WebDriver的项目,它也是一个自动化测试工具,彼时刚刚起步,后来它也成为Selenium的竞品之一。
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应用程序的自动化测试。选择一个测试框架,必须考虑日常工作中的场景以及当前的团队,进而选择合适的自动化测试工具来进行测试。而不是使用一个新的花里胡哨的框架,然后一段时间后因为它没有满足我们的需求而抛弃它。
最重要的是要行动起来,多写多练,日积月累,自然会如鱼得水,真正把自动化测试在企业中落地,带来对应的效率和质量保障方面的提升。