【问题标题】:Is it possible to create custom commands in Playwright?是否可以在 Playwright 中创建自定义命令?
【发布时间】:2021-12-26 13:29:27
【问题描述】:

我正在寻找一种在 Playwright 中编写自定义命令的方法,例如 it's done in Cypress。 Playwright Issues 有 one page 与之相关,但我从未见过任何代码示例。

我正在处理一个测试用例,试图提高代码的可重用性。代码如下:

import { test, chromium } from '@playwright/test';

config();

let context;
let page;

test.beforeEach(async () => {
  context = await chromium.launchPersistentContext(
    'C:\\Users\\User\\AppData\\Local\\Microsoft\\Edge\\User Data\\Default',
    {
      headless: false,
      executablePath: 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe',
    }
  );

  page = await context.newPage();
  await page.goto('http://localhost:3000/');
});

test.afterEach(async () => {
  await page.close();
  await context.close();
});

test('Sample test', async () => {
  await page.click('text=Open popup');
  await page.click('_react=Button >> nth=0');
  await page.click('text=Close popup');
});

我正在尝试创建一个函数来调用钩子 test.beforeEach() 和 test.afterEach() 以及其中的代码。

在剧作家问题页面中,它说我需要将它移动到一个单独的节点模块,然后我才能使用它,但我很难理解如何去做。

【问题讨论】:

    标签: javascript testing playwright


    【解决方案1】:

    您提供的示例可以通过实现自定义夹具来解决。 Fixtures 是@playwright/test 定制/扩展测试框架的解决方案。您可以定义注入到测试中的自己的对象(类似于浏览器、上下文、页面),以便测试可以访问它。但他们也可以在每次测试之前和之后做一些事情,例如设置先决条件并将其拆除。您还可以覆盖现有的固定装置。

    有关包括示例在内的更多信息,请查看此处: https://playwright.dev/docs/test-fixtures

    【讨论】:

      猜你喜欢
      • 2021-09-14
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2010-11-06
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      相关资源
      最近更新 更多