玩转浏览器自动化(1)Playwright 初体验

什么是浏览器自动化?

自动化是现代科技的重要标志,它使得机器设备、系统或过程可以在没有人或较少人的直接参与下,按照人的要求,通过自动检测、信息处理、分析判断、操纵控制,实现预期的目标。在工业、农业、军事、科学研究、交通运输、商业、医疗、服务和家庭等方面广泛应用。

浏览器自动化就是其中的一种,它使用应用程序为我们完成重复性的任务,以实现人为干预无法实现的速度和效率水平。.

那么,为什么我们需要浏览器自动化呢?实际上,浏览器自动化有很多使用场景:

  • 自动点击网页:最常见的浏览器自动化任务之一是自动单击网页中的按钮或链接。单击按钮用于导航网站、确认数据输入操作、选择指向其他页面的链接或取消导航。

  • 自动填写表单:可以自动执行重复的数据输入任务。源数据可能来自数据库、Excel 或 CSV 文件,甚至从另一个应用程序中读取数据。然后,它可以自动输入到表单中,并通过单击按钮接受信息。

  • 从网页中提取数据:当执行数据输入或搜索任务时,通常需要从网页中提取结果。结果可以是 HTML 标记、文本或字段值、指向文件的超链接,或者在自动化后续过程中可能需要使用的任何其他特定属性。

  • 自动化测试:自动化测试包含了很多方面,比如性能测试。但在浏览器自动化中,我们一般指的是端到端功能测试。例如,检查在登录页面上输入无效的登录名或密码时,是否会显示一条错误消息。

实现浏览器自动化需要考虑如何实现应用程序与浏览器进行交互,这听起来很具有挑战性。但幸运的是,市面上已经有了一些很棒的工具,帮助我们实现浏览器自动化。其中,Playwright 是一款强大的浏览器自动化工具,可以让你轻松地完成上述任务。

什么是 Playwright?

Playwright是一款由Microsoft开发和维护的开源跨浏览器自动化库,它专为Web应用程序而设计。Playwright的特点非常丰富,包括跨浏览器、跨平台、跨语言、自动等待、支持多标签页/浏览器窗口、调试工具支持等等。其中最值得一提的是自动等待功能,它可以在执行动作之前等待元素是可操作的,消除了人为超时的需要,这是导致测试不可靠的主要原因。此外,它还支持多标签页/浏览器窗口,可以像一个真正的用户一样与多页面、多网站交互,并轻松处理frames和浏览器事件。另外,它提供了许多不同的调试选项,使其对开发人员友好。

与老牌的自动化测试框架Selenium相比,Playwright更加现代化。Selenium的实现是非常臃肿的3层架构,因为它需要一个特有浏览器的WebDriver中间层实现来与浏览器进行交互。而现代浏览器已经支持了一些原生的功能,比如Chrome DevTools Protocol,它允许开发者通过一个简单的WebSocket连接与浏览器进行交互,这些功能都是基于标准的,而不是特定浏览器的。因此,Playwright无需浏览器帮它实现任何功能,而是利用这些原生功能直接与浏览器进行交互,来实现浏览器自动化。这使得Playwright的架构更加简单,更加现代。

玩转浏览器自动化(1)Playwright 初体验

总之,Playwright是一款功能强大、现代化的浏览器自动化工具,它可以更快、更可靠地完成浏览器自动化操作。

Hello Playwright

Playwright是一种跨平台的开源浏览器自动化工具,支持多种编程语言,包括JavaScript、TypeScript、Python、Java和C#。在这里,我们将使用C#编写示例代码。接下来,我们将从设置C#开发环境开始,让你快速掌握Playwright的使用方法。

设置开发环境

虽然可以使用不同的方式开发C#代码,但是大多数C#程序员还是使用Microsoft Visual Studio。因此,我们选择Visual Studio作为本书的集成开发环境(IDE)。

首先,用浏览器访问 https://visualstudio.microsoft.com/zh-hans/downloads,下载所需的Visual Studio版本,保存到“下载”文件夹。运行刚才下载的引导程序文件以安装Visual Studio Installer。安装完Visual Studio Installer后,可以使用它通过选择所需的功能集或工作负载来自定义安装。在这里,我们选中“ASP.NET 和 Web 开发”和“.NET 桌面开发”,点击“安装”按钮,等待安装完成。

玩转浏览器自动化(1)Playwright 初体验

创建C#项目

运行安装好的Visual Studio,在“开始”窗口中,选择“创建新项目”。在“创建新项目”窗口中,选择“控制台应用”作为要创建的应用类型,点击“下一步”按钮。在“配置新项目”窗口中,输入“项目名称”和“位置”,点击“下一步”按钮。在“其他信息”窗口中,选择“.NET 6.0”作为目标框架。点击“创建”按钮,完成项目的创建。

玩转浏览器自动化(1)Playwright 初体验

添加Playwright依赖

在Visual Studio的右侧“解决方案资源管理器”的项目名称上点右键,选择“在终端中打开”,进入开发者PowerShell窗口。在开发者PowerShell窗口中运行以下命令,安装Playwright依赖:

dotnet add package Microsoft.Playwright  

玩转浏览器自动化(1)Playwright 初体验

然后在顶部菜单栏中,依次选择“生成”>“生成解决方案”,等待项目生成成功。

安装浏览器

需要注意的是,Playwright自己启动的浏览器,并不是我们在本机已安装的普通浏览器程序,而是使用它自带的浏览器二进制文件。这样就避免了当机器上没有安装指定类型的浏览器而无法运行应用程序的问题。因此,我们需要在开发者PowerShell窗口中运行以下命令,安装Playwright所有受支持的浏览器二进制文件:

.\bin\Debug\net6.0\playwright.ps1 install  

玩转浏览器自动化(1)Playwright 初体验

需要注意的是,浏览器二进制文件只需要安装一次,以后就不需要再安装了。

编写代码

在代码编辑器中,全部删除Program.cs原有的默认代码,替换成下列代码:

using Microsoft.Playwright;  
  
var playwright = await Playwright.CreateAsync();  
  
await using var browser = await playwright.Chromium.LaunchAsync();  
  
var page = await browser.NewPageAsync();  
  
await page.GotoAsync("https://www.baidu.com");  
  
var title = await page.InnerTextAsync("title");  
  
Console.WriteLine(title);  

这段代码实现的功能是:使用Playwright启动Chromium浏览器,打开百度首页,获取页面标题,并输出到控制台。

在顶部菜单栏中,依次选择“调试”>“开始调试”,如果代码运行成功,控制台会输出百度首页的页面标题:百度一下,你就知道。

玩转浏览器自动化(1)Playwright 初体验

代码解读

在代码编辑器中,打开Program.cs文件,将鼠标悬停在对应的代码行上,可以查看相关的详细说明。

让我们来逐一解读每行代码的作用:

  • 第1行:引入Playwright命名空间。

  • 第3行:创建Playwright实例。

需要注意的是,Playwright的API是异步的。因此,需要使用async/await关键字。在C#中,await关键字的作用是:等待异步操作完成后继续执行后续代码。

  • 第5行:使用Playwright实例,启动Chromium浏览器。
  • 第7行:使用Chromium浏览器实例,创建一个新的页面。
  • 第9行:使用页面实例,打开百度首页。
  • 第11行: 使用页面实例,获取页面标题。
  • 第13行:输出页面标题到控制台。

总结

在本章中,我们了解了浏览器自动化以及Playwright的特点。然后我们学习了如何使用Visual Studio创建一个C#项目,以及如何使用Playwright启动Chromium浏览器,打开百度首页,并获取页面标题。

在下一章中,我们将学习Playwright的基本概念。