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. 使用数据属性选择器​ 提高测试稳定性

相关推荐
秋邱14 分钟前
用 Python 写出 C++ 的性能?用CANN中PyPTO 算子开发硬核上手指南
开发语言·c++·python
wenzhangli734 分钟前
ooderA2UI BridgeCode 深度解析:从设计原理到 Trae Solo Skill 实践
java·开发语言·人工智能·开源
晚烛1 小时前
CANN + 物理信息神经网络(PINNs):求解偏微分方程的新范式
javascript·人工智能·flutter·html·零售
灵感菇_1 小时前
Java 锁机制全面解析
java·开发语言
wazmlp0018873691 小时前
python第三次作业
开发语言·python
娇娇乔木1 小时前
模块十一--接口/抽象方法/多态--尚硅谷Javase笔记总结
java·开发语言
saber_andlibert1 小时前
TCMalloc底层实现
java·前端·网络
明月醉窗台1 小时前
qt使用笔记六之 Qt Creator、Qt Widgets、Qt Quick 详细解析
开发语言·笔记·qt
逍遥德1 小时前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
wangjialelele1 小时前
平衡二叉搜索树:AVL树和红黑树
java·c语言·开发语言·数据结构·c++·算法·深度优先