1.说到前言中的UI自动化测试工具,第一个推荐的肯定是Selenium。它的优点是跨平台、跨语言、完全开源,对商业用户没有任何限制,支持分布式,有成熟的社区和学习文档等,已经迭代更新到4版本。然后也有环境配置,加载效率低,运行速度慢等缺点。除了Selenium就没有其他推荐的工具了吗?当然不是,还有很多优秀的工具,比如Cypress、RobotFramework等。本文将介绍另一款强大易用的UI自动化测试工具——Playwright。2.简介微软开源的自动化测试工具Playwright,支持主流浏览器,包括:Chrome、Firefox、Safari等,支持同时运行headless模式和headed模式,并提供同步和异步API,可以结合Pytest测试框架使用,支持浏览器端自动录制脚本等功能。特点:1.跨浏览器。Playwright支持所有现代渲染引擎,包括Chromium、WebKit和Firefox。2.跨平台。在Windows、Linux和macOS上进行本地或CI、无头或有头测试。3.跨语言。在TypeScript、JavaScript、Python、.NET、Java中使用PlaywrightAPI。4.测试移动网络。适用于Android和MobileSafari的GoogleChrome浏览器的本机移动仿真。相同的渲染引擎适用于您的桌面和云端。官网地址:https://playwright.dev。GitHub地址:https://github.com/microsoft/playwright。3、安装Playwright支持跨语言,本文将使用Python来讲解。首先要做的是安装Python(带有Python环境)。然后打开命令行,输入安装命令。pipinstall--upgradepippipinstallplaywrightplaywrightinstall4。交互方式Playwright支持交互方式,即运行单行代码或代码块,运行结果可立即给出。既然Playwright同时支持同步和异步API,那什么是同步和异步呢?同步可以理解为在执行完一个函数或方法后等待系统返回一个值或消息。此时程序被阻塞,只有在收到返回值或消息后才执行其他命令。异步,函数或方法执行后,不需要以阻塞的方式等待返回值或消息。你只需要向系统委托一个异步流程,那么当系统收到返回值或消息时,系统会自动触发委托的异步流程来完成一个完整的流程。下面以打开浏览器,访问百度首页,关闭浏览器的操作为例。(1)同步命令打开命令行,输入python。进入Python交互模式,输入以下命令:fromplaywright.sync_apiimportsync_playwrightplaywright=sync_playwright().start()browser=playwright.chromium.launch(headless=False)page=browser.new_page()page.goto("https://www.baidu.com/")browser.close()playwright.stop()输入命令访问百度首页,浏览器页面会同时跳转到百度首页,命令行有输出响应和请求信息。(2)异步命令打开命令行,输入python-masyncio。进入Python交互模式,输入以下命令:fromplaywright.async_apiimportasync_playwrightplaywright=awaitasync_playwright().start()browser=awaitplaywright.chromium.launch(headless=False)page=awaitbrowser.new_page()awaitpage.goto("https://www.baidu.com/")awaitbrowser.close()awaitplaywright.stop()输入指令访问百度首页,浏览器页面也会同时跳转到百度首页,并且命令行还将输出带有请求信息的响应。5.录制方式Playwright有一个命令行工具(录制功能),可以用来录制用户交互和生成代码(Java、Python等)。实际上,它类似于SeleniumIDE。(1)定时录制打开命令行,输入:playwrightcodegenbaidu.com自动打开浏览器,跳转到百度首页。同时弹出录制窗口,可以看到正在录制,脚本语言为Python。通过操作(点击、输入等)浏览器页面,脚本会自动增加操作的步骤。此外,记录工具还可以获得元素的定位。点击停止记录,然后点击Explore,在页面上点击你要定位的元素,获取元素所在位置的值。最后,复制录制的脚本并进行适当的调整。调整脚本代码:#!/usr/bin/envpython#-*-coding:utf-8-*-#公众号:AllTestssoftwaretestfromplaywright.sync_apiimportPlaywright,sync_playwright,expectdefrun(playwright:Playwright)->None:browser=playwright.chromium.launch(headless=False)context=browser.new_context()#打开新页面page=context.new_page()#转到https://www.baidu.com/页面。goto("https://www.baidu.com/")#点击input[name="wd"]page.locator("input[name=\"wd\"]").click()#填写input[name="wd"]page.locator("input[name=\"wd\"]").fill("自动化测试")#clicktext=Baidupage.locator("text=Baidu").click()#------------------context.close()browser.close()withsync_playwright()asplaywright:run(playwright)(2)模拟运动设备录音open可以模拟手机和平板设备。比如模拟iPhone13访问作者的CSDN。playwrightopen--device="iPhone13"blog.csdn.net/wangmcn如图:模拟在iPhone13上打开浏览器的效果。6.编写方式使用IDE(如PyCharm、VisualStudioCode等.)编写代码并运行程序。(1)启动浏览器(headlessmode)Playwright可以启动chromium、firefox、webkit这三种浏览器中的任意一种。示例操作如下,打开浏览器,跳转到百度,截图,输出页面标题,关闭浏览器。脚本代码:#!/usr/bin/envpython#-*-coding:utf-8-*-#公众号:AllTests软件测试fromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:browser=p.chromium.launch()page=browser.new_page()page.goto("https://www.baidu.com/")page.screenshot(path="example.png")打印(page.title())browser.close()运行结果:控制台输出页面标题。(2)启动浏览器(带头模式)默认情况下,Playwright以无头模式运行浏览器。要查看浏览器UI(无头模式),请在启动浏览器时传递headless=False标志,slow_mo也可用于减慢执行速度。脚本代码:#!/usr/bin/envpython#-*-coding:utf-8-*-#公众号:AllTests软件测试fromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:browser=p.chromium.launch(headless=False,slow_mo=50)page=browser.new_page()page.goto("https://www.baidu.com/")page.screenshot(path="example.png")print(page.title())browser.close()(3)异步Playwright支持API的两种变体:同步和异步。支持异步,如果你的项目使用了asyncio,你应该使用asyncAPI。脚本代码:#!/usr/bin/envpython#-*-coding:utf-8-*-#公众号:AllTests软件测试p:browser=awaitp.chromium.launch()page=awaitbrowser.new_page()awaitpage.goto("https://www.baidu.com/")print(awaitpage.title())等待浏览器。关闭()异步。运行(主要())
