📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

NEW BATCH ANNOUNCEMENT: Playwright JavaScript/TypeScript Training: 28th Jan 2026 (Registration Open)

Naveen AutomationLabs36:13

Transcription

大家好,我是 Naven。欢迎回到 Naven Automation Labs。

各位,关于我们的 Playwright JavaScript 和 TypeScript 补丁有一个快速的公告。很多人都在问 Navin,你们什么时候开始这个。所以,日期终于公布了,嗯,1月28日我们开始。所以,这是一个像样的训练营,像样的 Playwright 端到端培训,我们将涵盖。记住一件事,这次的时间是印度标准时间晚上8点,印度标准时间晚上8点意味着如果你在印度,是晚上,因为早上,嗯,不可能安排这个批次,而且每周是3天。所以,如果你在美国,对你来说将是早上9点30分美国东部时间,然后如果你在太平洋时区,早上6点30分太平洋时间,早上8点30分美国中部时间,或者这次英国和欧洲的人也可以加入,因为将是下午2点左右,下午2点30分英国时间。所以,如果你有兴趣,你可以直接加入这个批次,相信我,这是我们目前市场上最好的之一,它将涵盖 Playwright 与 JavaScript 和 TypeScript。为什么是 JavaScript 和 TypeScript?因为 Playwright TypeScript 是市场上最好的组合,并且记住,在学习 TypeScript 之前,虽然我们将用 TypeScript 和框架等一切进行设计,但没有 JavaScript 你就无法学习 TypeScript。好的。所以,很多人犯了这个错误,直接跳入 TypeScript 或直接跳入 Playwright 并设计框架,而没有理解 JavaScript,那么你就无法精通,你就不会获得像我们在 Selenium Java Python 和所有这些工具中那样自信的水平。首先我们做什么,我们学习什么,我们学习 Java,然后我们使用 Selenium,对吧?然后我们就能理解一切。这个工具也一样,如果你精通 JavaScript 和 Playwright,那么你才能设计框架,设计你自己的代码,优化你的代码,调试你的代码,再加上你必须开发逻辑,这不仅仅是写纯脚本,你必须创建实用工具,通用函数,辅助函数,任何数量的,你知道的设计模式,你必须遵循,等等。所以,这就是为什么来自 Java 背景的人可以理解为什么编程语言在这里实际上很重要。但相信我,你不需要任何语言的先验知识,也不需要任何关于 JavaScript 或 TypeScript 的先验知识。不,不用担心。我将从头开始涵盖一切。对。所以,这些是你可以去查看的细节。你可以填写这个表格,进行注册,然后就完成了。但我会快速过一遍课程内容,因为我告诉你,没有 JavaScript,TypeScript,我们就不会继续前进。而且我不是说你必须像开发者那样精通 JavaScript 或 TypeScript,因为对开发者来说,JavaScript 有点不同。他们必须设计用户界面,然后是 Web 框架等等,他们必须做到,他们必须开发 Web 应用程序。但对我们来说,从测试自动化角度、面试角度、概念角度、编程角度、面向对象编程角度来看,这就是为什么 JavaScript 非常非常重要。所以,如果你来自,你知道的,手动测试背景或非编程背景,或者,嗯,嗯,对自动化没有了解,或者对自动化有非常基础的了解,对吧?或者事实上,你对自动化有一些基础知识,比如 Selenium with Java,这也是最适合你的培训,相信我,目前市场上。所以,关于 JavaScript,我们将从头开始涵盖一切,比如如何设置,有什么区别,JavaScript 究竟是如何工作的,你知道的编译语言和运行时语言有什么区别,然后为什么 JavaScript 实际上是运行时或动态语言,我们将讨论各种示例,各种概念,如变量、数据类型、不同的运算符、表达式、循环、函数,JavaScript 有点令人困惑,最初,特别是来自 Java 背景的人,因为,嗯,这里的东西有点不同。这不是编译型语言。所以,我们必须正确理解它,很多人在这里犯错误,特别是关于函数和箭头函数、匿名函数,对吧?如果,然后,如何设计,你知道的,就像我们在 Java 中使用 Java 和 Lambda 流一样,这里也有类似的东西。数组是什么意思?然后是正确的对象,面向对象编程概念,模块,导入,导出,篡改,字面量,有无数的东西,加上类和对象。有哪些不同的面向对象编程概念?然后是异步编程,比如 Promise,原生异步处理,回调地狱,回调参数,异步和同步 await 概念,Map 集合类型等等,因为如果你谈论 Playwright,你知道的,无数的概念都与 Promise 有关。在面试时,人们会问 Promise 的概念。Promise 拒绝是什么意思?Promise 接受是什么意思?Promise 实现是什么意思?然后何时使用 async?何时使用 await?同步和异步编程是什么意思?好的,关于所有这些概念,它看起来很简单,但有时并不那么直接。所以,相信我,我的教学方法将极大地帮助你以一种非常简单的方式理解这些复杂概念,你将永远不会忘记这些概念。相信我。然后,一旦 JavaScript 完成,我们就必须在这里端到端地正确理解 TypeScript。TypeScript 更像是非常接近面向对象编程。我们有正确的访问修饰符、继承概念、构造函数等等。在 JavaScript 中,我们有这些概念,比如,你知道的,面向对象等等。但它只有非常有限的选项,或者非常原始的形式,但 TypeScript 是一种真正的类型语言,它是一种编译型语言。这就是为什么人们,你知道的,更喜欢使用 TypeScript 和 Playwright。这是你必须理解的最重要的东西,最好使用 TypeScript 和 Playwright,而不是 JavaScript。为什么?因为 TypeScript 是一种编译型语言。你写代码的那一刻,你在运行它之前设计好东西,编译器就会给你错误,就像我们在,你知道的,Java 或其他语言中一样。这里也一样。所以,这就是为什么如果你来自 Java 背景,理解 TypeScript 也会非常容易。好的,我不会深入研究每一个主题。但这就是你必须,嗯,选择顺序的方式。人们犯的错误是直接开始跳入 TypeScript。没有,你知道的,关于 JavaScript 的概念,然后你就无法理解,因为 TypeScript 实际上是 JavaScript 之上的一个包装器。所以,如果这些是 JavaScript 库,那么 TypeScript 就是在此基础上设计的。所以,这是我的 JavaScript,这是我的 TypeScript。记住,我们必须这样理解。所以,这就是为什么你必须理解 JavaScript 的概念。然后你才能学习 TypeScript,然后你才能开始使用 Playwright,它使用 TypeScript,你可以说 TypeScript 的大部分功能与 JavaScript 非常相似。对。所以,我们将看到,嗯,它究竟是如何工作的,以及它的内部架构等等,关于 TypeScript,然后我们将继续,我们将使用 Visual Studio Code 作为 IDE,因为这是 JavaScript 用户或 TypeScript 用户最好的 IDE 之一,你也可以使用 IntelliJ 或其他编辑器,但我个人建议你们使用 Visual Studio Code。然后,之后,我们必须设置 Playwright,以及 Playwright 是什么意思,如何安装所有 Playwright,我将从头开始告诉你一切。相信我,与 Selenium 或其他自动化工具相比,Playwright 有点不同。所以,你必须理解它的架构本身,你知道的,与,嗯,Selenium 相比,有点不同。Playwright API 是如何被调用的,如何与浏览器交互,它究竟是如何与服务器交互的,建立了什么样的双向通信,我们也将看到非常内部的东西,比如我们将尝试在内部调试 Playwright,并将它分解成多个部分。好的,关于架构,然后我们就会有一个清晰的画面,在我的脑海里。好的,是的,这就是 Playwright 实际上是如何工作的,以及它实际上是如何等待特定元素的。我们说,对吧?Playwright 具有自动等待功能,这就是原因,这就是 WebSocket 的原因,这就是它比市场上其他,你知道的工具快的原因。相信我,Playwright 市场正在蓬勃发展,因为有无数的功能,你知道的,比其他工具好。我不是说,好吧,Playwright 是最好的,毫无疑问。Playwright 有其优点和缺点,Selenium 也有其优点和缺点。但 Playwright 在速度、性能、定位器策略、并行执行等方面设计的方式,非常容易配置,这些东西非常快速。你不需要考虑它。它有自己的测试运行器。你不需要使用像 TestNG 或 JUnit 这样的第三方库。你可以直接编写你的测试用例,编写断言,然后完成。你不需要担心像 ThreadLocal 之类的东西。它有 Workers 的概念,自动地,你只需要维护一个配置属性,然后就可以了。之后,你就可以完全放手了。好的。所以,这就是它的设计方式。我们过去在其他工具中进行的许多,你知道的,不必要的繁重配置,在这里 Playwright 中非常容易完成。我们有非常容易截获屏幕截图、视频的概念,然后,真的想,你知道的,创建监听器、重试逻辑,然后是正确的超时、正确的自动等待、显式等待、手动等待也以一种非常系统的方式可用,但我们需要理解这一点。好的。所以,如何设置 Playwright,Playwright 架构,然后有各种浏览器导航命令,可以在多个浏览器上使用,我们必须理解,嗯,这也是 Playwright 中一个非常棘手的部分,有时人们不理解,你知道的,实际浏览器是什么意思,以及二进制文件是什么意思。他们最近也引入了 CTF,比如 Chrome for Testing,以及 Chromium,以及 Chromium,它支持 Brave 浏览器、Opera 浏览器和 Edge 浏览器,Chrome 浏览器,Chromium 引擎,也可以使用。CTF 也被引入了,但对于 Firefox,它们有一个典型的二进制文件,而不是实际的浏览器,对于 Safari,它们使用的是 WebKit。WebKit 是 Apple Safari 的引擎,而不是实际的 Safari 浏览器。所以,你知道的,二进制文件和不同,以及实际浏览器之间有什么区别,我们必须理解这一点,因为这些是人们在面试时会问的问题。对。所以,浏览器导航命令,如何与浏览器交互,上下文是什么意思,这是一个很棒的功能,浏览器中一个很棒的功能是浏览器上下文,用一个浏览器可以创建多个上下文,特别是为多用户测试或,你知道的,基于用户权限的测试设计的,如果你真的想做,一个很棒的功能在这里可用,然后我喜欢这部分,元素命令和定位器策略,你一定从我以前的视频或定位器实验室中听说过,比如 get by role,可访问性基于角色可用,XPath,CSS,我们在 Selenium 中使用过,但在这里,这是我使用 XPath 和 CSS 的最低优先级,90% 的情况下,我们将使用基于角色的定位器,我们将使用基于可访问性的定位器,我们将使用,比如 get by role,get by text,get by placeholder,get by all text,如何使用?对,浏览器中的可访问性树是什么意思,Playwright 实际上是如何使用可访问性树来创建定位器或维护定位器的,非常非常有趣的话题,很多人感到困惑,Navin,我真的对 Playwright 定位器感到困惑,所以,最后,最终只剩下 XPath 和 CSS 了。不,根据 Playwright 的文档,它清楚地说明了,请使用基于角色的或基于可访问性角色的定位器,而不是 XPath 和 CSS。这应该是你的最后优先级。所以,来自 Selenium 背景的人会遇到困难,因为他们习惯于,你知道的,使用 XPath 和 CSS,但现在有了 Playwright,有无数的选项可用。相信我,在 CSS 选择器中也有很棒的功能。你一定听说过,CSS 在 Selenium 中不支持文本,但在这里我可以做到。它们使用伪类来处理文本等等,然后我可以使用这些伪类来生成定位器,创建定位器,非常棒的功能可用。例如,在 Selenium 中,如果你必须,你一定做过这样的事情,比如,有一个 Web 表格,还有一个复选框,对吧?我必须选择复选框,让我们看看,对于 Nav 复选框,我必须选择它,然后我们必须做什么,我们必须创建,比如,前一个同级,后一个同级等等,或者可能写一个 for 循环,然后一个接一个地,当你看到 Nav 时,然后选择复选框,你不需要在这里做所有这些事情。这里他们给了伪类的概念,借助伪类,我可以在一个语法中,在一个定位器策略中轻松解决这个问题。我将教你如何做到这一点。好的,所以,这就是为什么,定位器是一个非常重要的话题,HTML 和 CSS 的正确介绍,XPath 我也会让你掌握,我不是说你不能使用它,我不会教你,不,不是那样的,我会教你一切,如果你在 XPath 和 CSS 方面很弱。相信我,在这两个或三个章节之后,你将成为 XPath 和 CSS 的大师。对。所以,基于角色的访问,比如可访问性优先的方法,我们总是使用,知道过滤和链式定位器,也为了精确性,比如父子组合。如果我真的想创建,我可以很容易地做到,关于定位器。此外,有无数的元素操作命令可用,不同的操作可用,设计精美的 type 方法,fill 方法,顺序地,你知道的,type 方法也可用,带有 pause,你也可以输入值,click 也可以输入值,带有正确的超时,你知道 Playwright 如何与浏览器交互,Playwright 说,好吧,这是网页,这是 DOM,对吧?这就是我们看到的,当我们进入 DOM 时,这就是 DOM。所以,首先 Playwright 说,让我们看看这个元素是否在 DOM 中可用,然后之后,Playwright 检查元素是否真的在页面上可用,它是否可见,或者在页面上。然后它检查元素是否真的启用,然后它检查元素是否真的稳定,它没有移动。然后它检查,你知道的,这个元素上或这个元素上的任何动画是否停止了,并且没有动画相关的效果。这样我就可以与这个元素交互。然后它也会检查这些东西。对。然后它检查元素是否真的可交互,然后我将点击这个元素或在这里输入值。如果它是一个文本字段,它将检查,好吧,元素是否真的可编辑,等等,所有这些检查,然后带有正确的超时,它有自己的自动等待功能,但你一定听说过有时自动等待也不起作用。我们必须手动放置我们的等待。所以,是的,如何做到这一点,每个命令都有等待。这是 Playwright 中一个有点令人困惑的话题,但我们将看到如何做到这一点。对。所以,定位器,元素识别,如何做到这一点,你知道的,主要问题是,当你看到,例如,如果我右键单击它并转到检查,如果我转到控制台,或者让我们看看这里的元素,我们在这里做什么?我们通常在这里写 XPath 和 CSS,但我告诉你,在 Playwright 中,我们通常不使用或不写,实际上不支持是一个错误的说法,但我们不经常使用 XPath 和 CSS。如何在这里创建 get by role 定位器?如何在这里创建 get by text 定位器?对,我无法在这里验证东西。所以,有各种识别东西的方法,或者在 Chrome DevTools 中进行元素识别,我们不会使用定位器实验室或任何其他 Chrome 扩展,你知道的,直接复制粘贴东西。不,我们将做什么?我将首先教你,我将让你掌握它,然后之后,无论你想使用什么工具,都取决于你,你想在这里使用哪个。对。然后是一些,你知道的,非常棒的场景,比如 Web 表格,复选框,表单元素,以及这些东西,我们将涵盖 Playwright 等待和对话框,非常棒,一个很棒的功能可用。如何配置时间,等待选择器,自定义等待时间,超时配置,对,警报弹出,确认弹出,提示,JavaScript 弹出,对话框,浏览器窗口,你知道的,对话框,文件下载,文件上传,这些东西我们将涵盖。这些东西在 Playwright 中设计得非常系统,与 Selenium 相比,没有像 Actions Class 这样的概念,这就是为什么我写了 Actions Class 等同于 Selenium,但在这里我们有什么?我们有不同的鼠标悬停和键盘操作,我可以轻松解决。没有复杂性,没有什么,非常直接的方法可用,但我们需要理解这些方法,如何滚动。滚动在 Playwright 中设计得非常棒。拖放,右键单击,你知道的,键盘操作,鼠标操作,鼠标悬停,你知道的,双击,右键单击,上下文点击,无论你想做什么,你都可以轻松地用 Playwright 操作来做到。所以,我们将看到如何做到这一点。然后,正如我告诉你的,浏览器上下文和身份验证,非常好的功能可用。浏览器上下文意味着如何创建,看,这就是 Playwright 为什么受欢迎,人们喜欢它,这是一个非常好的功能,用于真实场景。你打开一个,让我们看看这是我的 Chrome 浏览器,从同一个 Chrome 浏览器,我可以创建多个实例,这些实例称为浏览器上下文。上下文一,上下文二,上下文三。从同一个浏览器,在这个特定的浏览器上下文中,我将以管理员身份登录。在这里,我将以卖家身份登录,在这里,我将以合作伙伴身份登录。对于同一个应用程序,比如 amazon.com。在 Selenium 中,我们无法直接做到这一点。在 Selenium 中,我们必须分别打开三个浏览器。浏览器一,浏览器二,浏览器三,等等。但在这里,同一个浏览器中,我可以创建多个上下文,然后我可以简单地做 ABAC,基于角色的访问控制场景。我可以轻松做到。你的应用程序中的用户权限。有五个用户。第一个用户,比如这是管理员用户。你在应用程序中做了一些更改,然后同时,并行或顺序地,你可以作为客户登录,并检查,好吧,更改是否在这里反映出来。用同一个浏览器,我可以在这里做到。所以,这就是浏览器上下文的概念。浏览器身份验证和应用程序身份验证也可用。例如,我必须登录,好吧,为了一个测试。所以,我在这里做什么?在 Playwright 中,我们可以做一件事,我们可以维护会话和 cookie。我们可以维护身份验证 JSON 文件,并且每次都可以使用该 JSON 文件。所以,在下一次执行中,比如明天我再次运行它,我不需要登录。它将自动转到购物车页面,但在 Selenium 中我无法做到。在其他自动化工具中,我无法做到。对。例如,让我们看看,要到达购物车页面。为什么你想登录,比如登录到主页,主页到搜索,搜索到产品页面,产品页面到购物车页面。不,有了 Playwright,我说,好吧,直接去购物车页面,在此之前,登录,使用这个特定的登录或身份验证 JSON 文件。这是我的登录详细信息。请直接跳转到那里。所以,Playwright 实际上会做什么?在后端,Playwright 会自动登录应用程序,维护相同的 cookie,并在会话中,直接转到购物车页面。这就是身份验证策略,我可以轻松地使用它,你知道的,处理 cookie 和本地存储。所以,我将教你如何做到所有这些事情。然后有一些开箱即用的场景,比如复杂的 UI 场景,处理 AJAX 组件,使用日历,复杂的日历,Web 表格,无限滚动,Shadow DOM,SVG,使用 iframe,处理伪元素,网络请求,计时和同步,是的,我们也可以轻松地做到这一点。这些是我们将在那里讨论的一些复杂的开箱即用场景。然后这里和那里还有无数的项目符号点。我不会,你知道的,谈论每一个主题。你可以自己去看看课程内容等等。然后是高级 Playwright 部分。你知道的,Playwright 有自己的测试运行器。你不需要使用像 Jasmine 或 TestNG 或 JUnit 或类似的东西。如果你使用 Playwright 和 TypeScript 或 JavaScript,它有自己的测试运行器,这是 Playwright 和 Java 的问题,实际上 Playwright 和 Java,它们没有测试运行器,你必须使用 TestNG 或 JUnit。但使用 Playwright,如果你使用 TypeScript,它有自己的内部测试运行器,这就是为什么人们喜欢 Playwright 中这个内置的测试运行器功能,这就是为什么人们更喜欢 Playwright 和 TypeScript。所以,这就是我们将要涵盖的所有重要功能,你知道的,测试运行器,内置测试运行器,测试注解,Fixture,这是 Playwright 中最令人困惑和复杂的主题之一,但我会让你掌握它,我将让你掌握 Fixture。你永远不会忘记何时以及如何使用 Fixture,它的用例是什么,分组,依赖关系,排序,参数化,就像我们使用 DataProvider 一样,如何在这里做完全相同的事情,过滤器,标签,报告,并行执行,跨浏览器测试,视觉比较测试,所有这些事情我都可以轻松地用测试框架来做到。对。所以,一旦你对 Playwright 的测试框架或测试运行器感到满意,然后之后,就是时候创建一个端到端的框架或端到端的项目了。然后我们将讨论,你知道的,自动化框架是什么意思。不是从第一天我们就开始谈论它。不,如果你不熟悉语言,如果你不熟悉工具的核心功能,那么从一开始就直接设计框架就没有意义了。不。从一开始,我们就必须理解语言和所有这些东西,习惯于 Playwright 的语法等等,然后框架就会出现,带有设计模式,比如 Builder Pattern,Factory Pattern,Page Object Model,数据驱动测试方法,混合测试框架,然后创建可重用组件,比如 Element Util 和其他不同类型的实用工具,我可以轻松做到。我们将在这里讨论框架开发的最佳实践。我们将选择一个电子商务应用程序的实时项目,然后在这个应用程序上,我们将设计一个端到端的框架。比如报告,正确的项目结构,文件夹结构,创建对象,创建 Fixture,Page Object Model,不同的设计模式,正如我提到的,如何配置,你知道的,并行执行。内置的 HTML 报告可用,或者如何使用第三方报告,比如 Allure 报告,你知道的,如何设置钩子等等,一切都将正确地用框架设计。这些是,你知道的,框架,之后你可以轻松地在你的应用程序或你的项目中实现类似的框架。立即就可以做到,因为这就是我们在真实项目中的工作方式,我们在培训中也做同样的事情。不是那种小东西,好吧,不,只是,你知道的,一两页,然后培训就完成了,框架也完成了。不,不,伙计们,我们不是这样做的。我们涵盖了正确的 Fixture,正确的面向对象,至少你知道的,设计五到六七页。没有人会,你知道的,设计到六七层页面,正确的页面链模型等等,我们将在我们的实时项目中涵盖。然后项目不是唯一的事情,之后框架就准备好了,设计就准备好了,但之后你必须做什么?你必须与 DevOps 集成,DevOps 活动,持续集成,CI/CD 等等,你必须在这里使用。好消息是,这里我们集成了两者,Jenkins 和 GitHub Actions,两者我们都将在培训中讨论。Jenkins 设置用于 Playwright,比如如何创建 CI/CD 流水线,Jenkinsfile 等等。我们还将讨论 GitHub Actions。这些是非常长的章节,我们必须正确地涵盖。非常有趣。自动地,你知道的,邮件将被发送,Slack 通知,电子邮件通知,自动地,你知道的,一旦测试用例完成,它将创建一个仪表板,你知道的,一些漂亮的仪表板将通过电子邮件发送或发送到 Slack 通知,说,好吧,执行已完成,这些是测试用例通过和失败的,等等,我们可以轻松地用 Jenkins 和 GitHub Actions 来做到。对,非常棒的章节,我们将在这里讨论。然后是一些开箱即用的主题,比如 NodeJS 和 npm 生态系统,特别是在产品型公司,这就是我们工作的方式,我们涵盖了正确的框架,我们设计它,我们将它们捆绑成一个 Node 包,然后我们将其部署到 npm 生态系统,可能是 JROG 或 Nexus 或类似的东西,我们将它部署在那里,然后,让我们看看组织中的其他团队,在同一个组织中,他们可以下载,比如 npm locator labs 或 npm playwright 或 npm cypress。所以,同样的事情,当我们设计框架时,我们将它发布到某个公共位置,就像我们在 Selenium 中做 Maven 中心化一样,Maven 中心化存储库。同样的事情,对于 JavaScript 或 TypeScript 项目,我们使用 Node 包管理器 npm 存储库。我们将部署到 npm 存储库,然后从那里下载。这就是,伙计们,你必须学习和理解这些东西。然后 Dockerization 的作用是什么?是的,当然,我们有一个 Docker 文件用于 Playwright 测试,我们将创建它,如何使用 Docker Compose,如何扩展环境。有一个分片的概念,Playwright 支持,Playwright 提供自己的 Docker 镜像。不像 Selenium Grid,在 Selenium Grid 中,你必须下载多个特定浏览器的镜像,但在 Playwright 中,一个镜像就足够了。单个 Docker 环境,然后下载该镜像,该镜像将包含所有浏览器,然后开始运行你的测试用例,然后分片等概念就会出现。我们也会看到那部分。然后是云测试和集成,我们将与 Lambda Test 或 BrowserStack 集成。我们可以使用其中任何一个。云中的跨浏览器测试,如何使用?对。如何设置这些环境,如何设置这些,嗯,配置在我的本地项目或我的框架中,这样当我触发我的测试用例时,它将自动在云中运行测试用例。所以,如何使用这些云供应商,我们也将解释。然后,是的,还有另一件事,API 测试,我们可以用 Playwright 做 API 测试吗?是的,Playwright 支持。所以,你不需要跳到另一个 API 测试工具,在 Playwright 中,这是 UI,这是 API,你将它们结合在一起,在单个框架中,你编写这两者。这就是为什么人们更喜欢 Playwright,因为它支持 UI,也支持 API。比如所有不同的请求,GET 请求,POST 请求,PUT 请求,DELETE,Mocking,网络拦截,你知道的,所有这些东西,你都可以设计它。身份验证,授权,OAuth 1.0,2.0,JWT 等所有不同类型的 API 测试,你都可以在这里用 Playwright 进行。然后,很多人问 Navin,你会教 AI 吗?是的,我们将教 AI Copilot 和所有这些东西,MCP 服务器等等,但不是一开始。我不想让你,好吧,你们习惯于 AI,然后从那里获取代码,或者从那里生成代码并复制粘贴。不,我们不会遵循这种方法,伙计们,因为这是为了学习,我们必须从头开始设计一切。我们必须设计一个测试自动化框架。我们必须设计这些东西,然后之后,我们将开始使用 AI。并且有 AI 的用例。我将告诉你一个用例,好吧,让我们看看定位器修复或页面对象修复。今天我的测试用例绝对工作正常。突然发生了什么?UI 开发人员更改了定位器。对。明天显然我的测试用例会失败。我的页面对象会失败,因为定位器已更改。所以,我将做什么?我将这样做,给你一个基本想法。所以,让我们看看这是我的 try-catch 块。这是 try 块,这是 catch 块。我在这里写了一些定位器策略。比如,我在这里设计一个元素。显然,这个元素会失败,因为定位器在 UI 上已更改。所以,显然,如果它失败了,它将直接进入 catch 块,让我们说这是我的 catch 块。然后在 catch 块中,我将做什么?我将在这里创建一个提示。可能是某个 LLM 模型或 LM 模型在我的本地运行。可能是 Claude。也可能是 ChatGPT。可能是任何东西。对。它进入 catch 块的那一刻,我将说,我将在这里自动创建一个提示,说,好吧,如果这个特定的元素不起作用,我将说,嘿 ChatGPT 或任何东西,请找到 UI 上这个特定元素的最新属性,任何新的 ID 或新的 get by role 或新的 CSS 或 XPath,任何可用的,或者请更新定位器,然后给我响应。所以,它实际上会做什么?它将尝试帮助我修复元素,修复页面对象,当它进入 catch 块时。所以,第一次,显然它通过了,第二次它失败了。所以,在失败时,在运行时本身,它将自动修复这些东西,然后正确的元素出现,它将自动更新我的定位器,更新我的页面对象模型或我的 JSON 文件,或者任何定位器或 JSON 文件,它正在更新它,然后它实际上点击该元素。所以,会发生什么?然后第二天,如果我看到,好吧,我的测试用例通过了,它还会给出正确的原因,说你的定位器在 UI 上已更改,这就是为什么我们也在修复它,使用 AI,使用提示,或者使用,你知道的,调用一些基于 AI 的 API。显然,你必须写提示,但一切都是自动完成的。一旦完成,第二天如果你再次运行它,你不需要改变你代码中的任何一行,你代码中的任何一行,你都不需要改变。你的页面对象将被自动修复,你的定位器将被自动修复。所以,这就是我们将要看到的,你知道的,这种方法的优点和缺点。这就是我在这里写的 AI 模型的一个用例。Play MCP 也将涵盖,如何正确使用它,人们只是随意使用它,但如何使用它,你知道的,思考过程或推理过程或输出过程是什么意思,哪个 AI 代理是最好的,如何使用 Copilot 等等。但如果你看到这个主题,我们将用 22 个要点来涵盖,这意味着一切都完成了,然后我们才会涵盖。它不是从一开始就不必要的。此外,还有一点,是的,BDD 也是其中的一部分,Cucumber BDD 与 Playwright 不太好,但我们有两到三个专门的会话,只用于 Cucumber 和 Flite 集成。好的,我也会更新这个点。所以,是的,我们也有 BDD,Cucumber。优点和缺点是什么?相信我,很多人对 Cucumber 和 Flite 感到困惑,因为局限性,如何使用它。你知道的,有一个自定义世界,世界概念,这是 Playwright 和 Cucumber 团队一起设计的,然后人们没有正确使用它,因为他们不知道。所以,如何使用它们?如何创建功能文件?如何创建步骤定义文件,就像我们在 Selenium 中使用 Cucumber 的 Scenario Context 一样,我可以在这里借助自定义世界做到类似的事情,如何使用它,如何设计它,当我们在这里设计这些东西时,我们将看到。所以,你可以自己去看看,我不想,你知道的,只是去看看,你知道的,每一个项目符号点。相信我,这是一个很棒的培训,很棒的训练营,大约需要,因为你看到了课程内容,我们不妥协。在教学大纲,在质量,在内容等方面。每周是3天。完成所有内容大约需要4个月的培训,因为课程非常非常长,我们从一开始就以一种非常系统的方式,一种非常正确的方式来涵盖 JavaScript 和 TypeScript。在这里,每天的会话都会被录制,并提供给你。如果你,你知道的,无法参加会话或错过了会话,你只需要录音,终身访问。你可以自己去看看。你也会得到正确的笔记。所以,你将得到代码,视频,以及我们讨论的设计图和讨论,所有这些都将在我们使用的特定平台上提供给你。你将在那里得到。所以,终身访问,完整的示例,笔记,文档,PDF,电子书等等,你都会在这里得到。正确的支持,你也可以,我们每天都会有一个疑难解答环节,比如会话结束后,你知道的,15到20分钟,30分钟,无论你有什么疑问,你不需要等到第二天或什么的。或者如果你那天不在,或者你的疑问没有得到解答,你总是可以通过电子邮件发送给我,附上截图。我们随时为你解答疑问,因为我们理解 Playwright 对你们来说也是非常新的东西。也许是初始设置,或者有些东西不起作用。所以,请随时在会话期间或会话后,或者通过电子邮件来解答你的疑问。终身访问所有录制的视频,所有我们提供的文档 PDF,所有这些都将提供给你,终身访问。谁将是培训师?只有 Naven 将是培训师。我们不允许任何人进行培训,伙计们。所以我将随时为你服务,整个培训。相信我,整个训练营将改变你的测试自动化技能,我们提供的测试自动化平台,我们提供的培训类型。它将极大地帮助你通过面试。它将极大地帮助你用 Playwright 端到端地实现正确的框架。然后,相信我,你将与其他人不同。这是整个群体,而你,你知道的,看起来与这些人完全不同,因为,你知道的,我们在这里进行非常深入的覆盖培训。好的。所以,如果你有兴趣,请去做。这只是3到4个月的事情,伙计们。去做吧,因为这是,你知道的,市场上的未来,Playwright 正在蓬勃发展,很多公司已经开始使用它,需求量很大。很多 JD,职位描述,职位档案也包含同样的内容,用 Playwright 和 JavaScript 和 TypeScript,你必须实现,你必须设计这些东西。并且市场上有很多 AI 模型,与 Playwright 集成非常容易,与其他自动化工具相比。所以,这次培训将给你完整的想法,将所有点连接起来,这样你的脑海里就非常清楚,今年,尤其是在 2026 年的 AI 时代,应该学习什么,不应该学习什么。所以,只需去这个,嗯,文档和这个网站,实际上 URL。我将在视频的描述或视频的第一个评论中分享这个 URL,注册链接。自己去看看,如果你还有任何问题,我的电子邮件地址也写在那里,我的电话号码也写在那里。然后,如有任何问题,请随时联系我。我们从1月28日开始。非常感谢。我将在下一个视频中见到你。在那之前,保重,上帝保佑你。