Playwright + JS 进行页面跳转测试

目录

[1、 基本页面跳转测试](#1、 基本页面跳转测试)

[2、 新标签页跳转测试](#2、 新标签页跳转测试)

[3、 配置和设置](#3、 配置和设置)

关键点总结:


常见的跳转测试分为

1、基本页面跳转测试 - 点击link在当前页面跳转

2、新标签页跳转测试 - 点击link跳转之后跳转到一个新的tab

1、 基本页面跳转测试

javascript 复制代码
const { test, expect } = require('@playwright/test');

test('测试页面跳转', async ({ page }) => {
  // 导航到起始页面
  await page.goto('https://example.com');
  
  // 点击跳转链接
  await page.click('a[href="/target-page"]');
  
  // 验证是否跳转到目标页面
  await expect(page).toHaveURL('https://example.com/target-page');
});

2、 新标签页跳转测试

javascript 复制代码
const { test, expect } = require('@playwright/test');

test('新标签页跳转测试', async ({ page, context }) => {
  await page.goto('https://example.com');
  
  // 监听新页面打开事件
  const [newPage] = await Promise.all([
    context.waitForEvent('page'), // 等待新页面打开
    page.click('a[target="_blank"]') // 点击打开新标签页的链接
  ]);
  
  // 等待新页面加载完成
  await newPage.waitForLoadState();
  
  // 验证新页面的URL
  await expect(newPage).toHaveURL(/expected-url/);
  
  // 关闭新页面
  await newPage.close();
});

3、 配置和设置

在 playwright.config.js中配置导航选项:

javascript 复制代码
module.exports = {
  use: {
    // 默认导航超时时间
    navigationTimeout: 30000,
    // 默认等待直到网络空闲
    waitUntil: 'networkidle'
  }
};

关键点总结:

  1. **使用 waitForNavigation**​ 确保跳转完成

  2. 验证 URL ​ 使用 toHaveURL匹配器

  3. 处理新标签页 ​ 使用 context.waitForEvent('page')

  4. 添加适当的等待​ 处理异步跳转

  5. 使用数据属性选择器​ 提高测试稳定性

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
李少兄3 天前
JavaScript 隐式全局变量解析
javascript