Type something to search...
利用 Claude AI 的模型上下文协议🤖🧠,让 Playwright UI 测试变得更智能

利用 Claude AI 的模型上下文协议🤖🧠,让 Playwright UI 测试变得更智能

我们在之前的文章中讨论了Claude Anthropic的模型上下文协议(MCP)。本质上,MCP是一个标准化框架,旨在增强AI助手的功能。它在AI模型与我们正在交互的本地系统、数据或工具之间建立连接,从而为AI助手的有效操作提供必要的上下文。

Playwright 自动化测试工具

Playwright 是一个出色的开源 Web 自动化测试工具,非常适合快速且可靠地测试现代应用程序。它拥有许多酷炫的功能,使得 Selenium 或 Cypress 显得有些过时。

如果你有兴趣了解更多关于 Playwright 的信息,我在 UdemyYouTube 上有很多课程涵盖了所有细节。你将学习如何构建自动化测试框架,并使用 Playwright 编写稳健的测试。

使用 Playwright 编写测试代码

尽管 Playwright 是现代测试工具并支持现代应用程序自动化,但编写代码的方式与 Cypress 或 Selenium 基本相同。您需要

  1. 实例化 Playwright 并设置浏览器驱动程序
  2. 理解您尝试自动化的工作流程
  3. 在浏览器中找到定位器,如 CSS/XPath/ID/Name/ARIA 定位器
  4. 使用操作方法(如 Type、Click、Select 等)对定位器执行操作

场景

Playwright Test 代码用于自动创建用户的简单场景在 C# .NET 中如下所示

1. Navigate to website http://eaapp.somee.com and click the login link. 
2. In the login page, enter the username and password as "admin" and "password" 
respectively and perform login. 
3. Then click the Employee List page and click 
"Create New" button and 
4. Enter realistic employee details to create for Name, 
Salary, DurationWorked,Select dropdown for Grade as CLevel and Email.

在 Playwright 中使用 C# .NET 的代码如下所示

[Test]
public async Task CreateAnUser()
{
    using var playwright = await Playwright.CreateAsync();
    await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
    {
        Headless = false
    });
    var context = await browser.NewContextAsync();

    var page = await context.NewPageAsync();

    await page.GotoAsync("http://eaapp.somee.com/");

    await page.GetByRole(AriaRole.Link, new PageGetByRoleOptions { Name = "Login" }).ClickAsync();

    await page.GetByLabel("UserName").ClickAsync();

    await page.GetByLabel("UserName").FillAsync("admin");

    await page.GetByLabel("Password").FillAsync("password");

    await page.GetByRole(AriaRole.Button, new PageGetByRoleOptions { Name = "Log in" }).ClickAsync();

    await page.GetByRole(AriaRole.Link, new PageGetByRoleOptions { Name = "Employee List" }).ClickAsync();

    await page.GetByRole(AriaRole.Link, new PageGetByRoleOptions { Name = "Create New" }).ClickAsync();

    await page.GetByLabel("Name").ClickAsync();

    await page.GetByLabel("Name").FillAsync("Adam");

    await page.GetByLabel("Salary").FillAsync("10000");

    await page.GetByLabel("DurationWorked").FillAsync("1");

    await page.GetByLabel("Grade").FillAsync("1");

    await page.GetByLabel("Email").FillAsync("adam@adam.com");

    await page.GetByRole(AriaRole.Button, new PageGetByRoleOptions { Name = "Create" }).ClickAsync();

    await page.ScreenshotAsync(new PageScreenshotOptions
    {
        Path = "screenshot.png",
        FullPage = true
    });
}

现在如何让 AI 代理完成同样的工作?

好吧,LLM(大型语言模型)可以生成如上所示的代码,但它无法在我们的本地机器上运行代码,这就是 AI 代理非常方便的原因。它们将帮助我们在本地机器上执行操作,支持 LLM。那么,我们该如何实现呢?

欢迎来到 MCP,这是一个新近 开源 的标准,旨在通过将 AI 助手与系统和工具连接起来,帮助其更有效地工作。在这里,工具是我们的本地浏览器。

现在,借助 MCP 标准的强大功能,我们可以为 Playwright 或 Puppeteer 编写一个 MCP 服务器。这个 MCP 服务器将作为 AI 模型(Claude)与我们本地机器上运行的 Chrome 浏览器之间的桥梁。

执行 UI 中下拉选择的 MCP 服务器示例代码如下所示:

    case "playwright_select":
      try {
        await page.waitForSelector(args.selector);
        await page.selectOption(args.selector, args.value);
        return {
          toolResult: {
            content: [{
              type: "text",
              text: `Selected ${args.selector} with: ${args.value}`,
            }],
            isError: false,
          },
        };
      } catch (error) {
        return {
          toolResult: {
            content: [{
              type: "text",
              text: `Failed to select ${args.selector}: ${(error as Error).message}`,
            }],
            isError: true,
          },
        };
      }

上面的代码与您在第 3 行和第 4 行看到的 Playwright 代码完全相同,分别是 page.waitForSelectorpage.selectOption

在您的本地 Claude Desktop 上设置 Playwright MCP 服务器

上述代码片段是我编写的开源 MCP 服务器库 Playwright-MCP-Server 的一部分,您可以在 GitHub 这里 和 NPM 这里 找到它。

为了让您能够与 Claude Desktop 客户端一起使用 MCP 服务器,您需要执行以下操作:

  1. 修改 Claude Desktop 客户端的配置文件,通常可以在以下路径找到:
~/Library/Application\ Support/Claude/claude_desktop_config.json

并使用以下设置:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@executeautomation/playwright-mcp-server"]
    }
  }
}

2. 然后打开(如果没有重启)Claude Desktop 客户端,您将看到这里有一个新的“从 MCP 附加”按钮

点击“附加 MCP”按钮,您将看到如下所示的界面,确认已添加 Playwright-MCP-server

Playwright MCP 服务器运行示例

在上述超级简单的配置之后,是时候使用我们配置的 MCP 服务器了。

为了尝试相同的场景,你在 Playwright 中编写了很多代码,我们可以通过纯文本完成所有这些操作,如下所示,这将为你执行所有操作 而无需在 Playwright 中编写一行代码

视频演示

这是上述讨论的视频演示与实际操作

有用的资源

查看 Playwright-MCP-server 的源代码,地址为 https://github.com/executeautomation/mcp-playwright

NPM 包地址为 https://www.npmjs.com/package/@executeautomation/playwright-mcp-server

在 MCP-Get 中找到该包,地址为 https://mcp-get.com/packages/%40executeautomation%2Fplaywright-mcp-server

Related Posts

使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
10 个强大的 Perplexity AI 提示,让您的营销任务自动化

10 个强大的 Perplexity AI 提示,让您的营销任务自动化

在当今快速变化的数字世界中,营销人员总是在寻找更智能的方法来简化他们的工作。想象一下,有一个个人助理可以为您创建受众档案,建议营销策略,甚至为您撰写广告文案。这听起来像是一个梦想? 多亏了像 Perplexity 这样的 AI 工具,这个梦想现在成为现实。通过正确的提示,您可以将 AI 转变为您的 个人营销助理。在本文中,我将分享 10 个强大的提示,帮助您自动

阅读更多
10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

人工智能技术,如机器学习、自然语言处理和数据分析,正在重新定义传统设计方法。从自动化重复任务到实现个性化用户体验,人工智能使设计师能够更加专注于战略思维和创造力。随着这一趋势的不断增长,UI/UX 设计师越来越多地采用 AI 驱动的工具来促进他们的工作。利用人工智能不仅能提供基于数据的洞察,还为满足多样化用户需求的创新设计解决方案开辟了机会。 1. 用户角色开发 目的

阅读更多
在几分钟内完成数月工作的 100 种人工智能工具

在几分钟内完成数月工作的 100 种人工智能工具

人工智能(AI)的快速发展改变了企业的运作方式,使人们能够在短短几分钟内完成曾经需要几周或几个月的任务。从内容创作到网站设计,AI工具帮助专业人士节省时间,提高生产力,专注于创造力。以下是按功能分类的100个AI工具的全面列表,以及它们在现实世界中的使用实例。 1. 研究工具 研究可能耗时,但人工智能工具使查找、分析和组织数据变得更加容易。**ChatGPT, Cop

阅读更多
你从未知道的 17 个令人惊叹的 GitHub 仓库

你从未知道的 17 个令人惊叹的 GitHub 仓库

Github 隐藏的宝石!! 立即收藏的代码库 学习编程相对简单,但掌握编写更好代码的艺术要困难得多。GitHub 是开发者的宝藏,那里“金子”是其他人分享的精心编写的代码。通过探索 GitHub,您可以发现如何编写更清晰的代码,理解高质量代码的样子,并学习成为更熟练开发者的基本步骤。 1. notwaldorf/emoji-translate *谁需

阅读更多