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

Cypress新手求助:如何获取新窗口URL并访问微软登录页

解决Cypress中捕获新窗口URL并访问的问题

你当前的代码已经对window.open做了stub,但没有提取它被调用时的目标URL。可以通过以下步骤获取并访问该URL:

  • 点击登录按钮后,断言stub已被调用,再提取它的第一个参数(即弹出窗口的URL)
  • 直接用cy.visit()访问这个URL,就能进入微软登录页面进行后续操作

修改后的完整代码:

describe('Login to PortalCX', () => {
  it('login', () => {
    cy.visit('https://develop-portal.teamscx.com/', {
      onBeforeLoad(win){
        // 对window.open做stub并命名为windowOpen
        cy.stub(win, 'open').as('windowOpen')
      }
    })

    // 点击登录按钮
    cy.get('[type="Submit"]').click()

    // 等待stub被调用,提取目标URL
    cy.get('@windowOpen').should('have.been.calledOnce').then((stub) => {
      // 获取window.open第一次调用时的第一个参数(即跳转的登录URL)
      const loginUrl = stub.args[0][0]
      // 访问该登录URL
      cy.visit(loginUrl)
    })

    // 后续可在此编写微软登录页面的账号输入逻辑
    // 示例:cy.get('#username').type('你的账号')
  })
})

关键说明:

  • stub.args存储了stub被调用时的所有参数集合,stub.args[0][0]对应第一次调用时传入的URL参数
  • should('have.been.calledOnce')用于确保stub已被触发,避免异步操作导致的参数获取失败
  • 访问捕获到的URL后,即可像操作普通页面一样处理微软登录的输入控件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:15:58