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

Cypress测试中如何获取type为submit的按钮触发的弹窗URL

获取submit按钮触发的SSO弹窗URL的可行方案

静态遍历DOM找不到form、按钮没有href属性是正常现象——这类微软SSO跳转逻辑基本都是绑定在按钮的点击事件回调里,由JS动态拼接URL、触发弹窗,不会把链接直接写在静态HTML源码里,可按以下场景选对应方法获取:

手动调试场景

  • 打开浏览器开发者工具,切到*网络(Network)*面板,勾选「保留日志(Preserve log)」,将请求过滤类型设置为Doc(文档类请求,对应弹窗加载的整页内容)
  • 点击目标提交按钮,待弹窗触发后,在请求列表里找到域名为login.microsoftonline.com的请求,右键选择「复制链接地址」即可拿到完整弹窗URL
  • 需要精准定位弹窗生成逻辑的话,可以在开发者工具的「事件监听器断点」里勾选Script > Window > window.open,再次点击按钮时代码会在弹窗创建的位置断住,此时window.open方法传入的第一个参数就是生成的弹窗URL,哪怕URL是运行时动态拼接的也能100%捕获

自动化测试场景

如果是在自动化测试执行过程中需要捕获该URL,不需要提前解析页面源码,直接监听新窗口事件即可:

  • Playwright框架可以直接绑定弹窗监听,参考代码:
# 监听点击按钮后触发的弹窗
with page.expect_popup() as popup_capture:
    page.locator('input[type="submit"]').click()
sso_popup = popup_capture.value
# 直接读取弹窗对象的url属性即可拿到完整SSO地址
target_sso_url = sso_popup.url
  • Selenium框架可以通过窗口句柄切换实现:点击按钮后等待新窗口句柄生成,切换到新窗口后读取driver.current_url就能拿到目标URL

不要尝试用requests直接模拟请求绕过SSO流程,微软SSO链路包含动态生成的CSRF令牌、租户签名校验、重定向路径校验,硬编码模拟请求的参数有效期极短,稳定性极差,监听真实用户操作触发的跳转是成本最低、稳定性最高的方案。

按钮示例截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:36:27