You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Playwright自动化Razor Pay支付时,点击Success按钮打开新窗口而非标签页

解决Playwright中Razor Pay Success按钮点击打开新窗口而非标签页的问题

问题场景

使用Playwright自动化测试Razor Pay支付流程时,支付成功后打开的新标签页中,点击Success按钮会触发新浏览器窗口打开,而非预期的新标签页,需要调整为在新标签页打开。

可行解决方案

方案1:修改按钮的target属性强制在新标签页打开

在点击Success按钮前,通过evaluate方法修改元素的target属性为_blank,强制浏览器在新标签页打开链接:

// 先修改按钮的target属性
await successTab.locator(Located.byExactText('Success')).evaluate(el => {
  el.target = '_blank';
});
// 再点击按钮
await successTab.locator(Located.byExactText('Success')).click();

方案2:拦截Popup事件并在新标签页重定向

如果按钮通过window.open触发新窗口,可以监听popup事件,获取目标URL后在当前上下文的新标签页打开,同时关闭原弹窗:

// 监听successTab页面的popup事件
successTab.once('popup', async (popupWindow) => {
  // 获取弹窗的目标URL
  const targetUrl = await popupWindow.url();
  // 在当前浏览器上下文打开新标签页并跳转
  const newTab = await successTab.context().newPage();
  await newTab.goto(targetUrl);
  // 关闭原弹窗窗口
  await popupWindow.close();
});

// 点击Success按钮
await successTab.locator(Located.byExactText('Success')).click();

方案3:配置浏览器启动参数合并窗口与标签页

启动浏览器时添加参数,强制浏览器将新窗口合并为标签页(该参数依赖Chrome/Edge等Chromium内核浏览器):

const { chromium } = require('playwright');

const browser = await chromium.launch({
  args: ['--merge-tabs-and-windows']
});

说明

出现该问题的核心原因是Success按钮的跳转逻辑(如JS的window.open配置、HTML元素的target属性)指定了打开新窗口,Playwright默认遵循浏览器原生行为,通过上述方法可强制调整为新标签页打开的行为。

内容的提问来源于stack exchange,提问作者Viraj Sangale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:35:17