前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最近比较火的palywright了解一下?

最近比较火的palywright了解一下?

作者头像
我被狗咬了
发布2021-01-13 15:17:25
1.7K0
发布2021-01-13 15:17:25
举报
文章被收录于专栏:Python乱炖Python乱炖Python乱炖

前言

我们介绍许多e2e的自动化测试工具

一类是基于 Selenium 的测试框架:

  • robot framework
  • gauge
  • SeleniumBase
  • seldom(虫师)

另一类是基于JS语言的测试工具:

  • cypress
  • puppeteer

前者本质上就是基于Selenium的自动化测试工具,后者在测试人员这个圈子也是未能撼动Selenium的地位,我认为有两个原因,一是Selenium是一个非常成熟的自动化测试工具,有大量的学习资料;另一方面selenium支持Python,没错Python以其简单的语法已经成为了测试人员学习编程语言的不二之选。

好了,介绍个新的自动化测试工具还要铺垫这么多?这是因为我看了palywright的文档之后,觉得这工具很大概率能在更广泛的群体中流行起来。

playwright 介绍

官方:https://playwright.dev/

介绍

Playwright enables fast, reliable and capable automation across all modern browsers.

支持平台&浏览器

Linux

macOS

Windows

Chromium 89.0.4344.0

WebKit 14.1

Firefox 84.0b9

支持语言

  • JavaScript and TypeScript: https://github.com/microsoft/playwright
  • Java: https://github.com/microsoft/playwright-java
  • Python: https://github.com/microsoft/playwright-python
  • C#: https://github.com/microsoft/playwright-sharp

从支持的平台、语言和浏览器来看,是不是有Selenium的味道。所以,playwright 一开始的定位就不是给一个特定的"小众"群体使用的;另外,有微软爸爸维护,从微软这几年拥抱开源的态度来看,这个工具应该会得到持续的支持。这也是我前面推断这个工具大概率会流行起来的原因。

安装

不同的语言安装方式不同,根据上面的链接,到对应的项目下面查看安装方式。本文以Python为例。

安装plywright

> pip install playwright

安装浏览器

> python -m playwright install

Downloading chromium v827102 - 89.4 Mb [====================] 100% 0.0s
chromium v827102 downloaded to C:\Users\fnngj\AppData\Local\ms-playwright\chromium-827102
Downloading firefox v1205 - 74.9 Mb [====================] 100% 0.0s
firefox v1205 downloaded to C:\Users\fnngj\AppData\Local\ms-playwright\firefox-1205
Downloading webkit v1383 - 51.4 Mb [====================] 100% 0.0s
webkit v1383 downloaded to C:\Users\fnngj\AppData\Local\ms-playwright\webkit-1383

录制脚本

plywright可以在浏览器中记录用户的互动并生成代码。

执行命令

> python -m playwright codegen

接下来,对录制的脚本做简单的修饰。

from time import sleep
from playwright import sync_playwright


def run(playwright):
    pw = playwright().start()
    browser = pw.chromium.launch(headless=False)
    context = browser.newContext()

    # Open new page
    page = context.newPage()

    # Go to https://www.baidu.com/
    page.goto("https://www.baidu.com/")

    # Fill input[name="wd"]
    page.fill('input[name="wd"]', "playwright")

    # Click input[type="submit"]
    page.click('input[type="submit"]')

    sleep(2)

    # assert title
    assert page.title() == "playwright_百度搜索"
    # ---------------------
    context.close()
    browser.close()


if __name__ == '__main__':
    run(sync_playwright)

从API来看,和大多数自动化工具都差不多。其他文章在介绍playwright时用“不用写一行代码的自动化工具” 就纯属噱头。Selenium IDE 也可以录制,QTP也有录制,这都是十来年前的技术了,录制是万能的,它只是编写自动化的一种辅助工具。

异步的写法

playwright官方例子中给出的异步的写法。从它提供的API sync_playwright 的命名也可以看出,它很喜欢异步。

import asyncio
from playwright import async_playwright


async def main():
    async with async_playwright() as p:
        for browser_type in [p.chromium, p.firefox, p.webkit]:
            browser = await browser_type.launch(headless=False)
            page = await browser.newPage()
            await page.goto('https://www.baidu.com')
            await page.screenshot(path=f'example-{browser_type.name}.png')
            await browser.close()

asyncio.get_event_loop().run_until_complete(main())

小结:

palywright 和 selenium 都只是提供了一套操作web浏览器的API而已,他们是自动化测试的基础,他们都需要和单元测试框架、设计模式这些结合才能完成自动化测试项目。

自动化项目的成功与否,取决于被自动化的项目,也取决于测试人员的设计能力,不应该神化任何一款自动化测试工具。

技术交流群
为了大家更快速的学习知识,掌握技术,随时沟通交流问题,特组建了技术交流群,大家在群里可以分享自己的技术栈,抛出日常问题,群里会有很多大佬及时解答的,这样我们就会结识很多志同道合的人,长按下图可加我微信,备注:Python即可进群。
               扫码加群?微信公众号长按扫一扫关注公众号?

回复:[学习资料]获取最新Python学习资料

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

本文分享自 Python乱炖 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • playwright 介绍
  • 安装
  • 录制脚本
  • 异步的写法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档