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

使用Cypress测试Xero认证遇登录错误,求解决方案

解决Cypress测试Xero认证流程的错误问题

针对认证错误的解决办法

  • 绕过Xero反机器人检测
    Xero会识别自动化工具的访问行为并拦截,可通过配置Cypress模拟真实浏览器环境:
    在cypress.config.js中添加以下配置:

    module.exports = defineConfig({
      e2e: {
        userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
        chromeWebSecurity: false // 解决跨域认证的潜在问题
      }
    });
    
  • 复用已登录会话Cookie
    手动登录Xero一次,通过浏览器开发者工具导出会话相关Cookie,在Cypress测试中直接注入Cookie跳过登录流程:

    // 替换为你实际获取的Cookie值
    cy.setCookie('xero_session_id', 'xxx');
    cy.setCookie('xero_identity', 'xxx');
    cy.visit('/your-auth-callback-path');
    

    注意Cookie有有效期,需定期更新。

  • 核对Xero应用配置
    确保你的Xero开发者应用中:

    • 回调URL与Cypress测试使用的地址完全一致(包含端口号,如http://localhost:3000/callback)
    • 已开启认证所需的权限范围(如openid、profile等)

替代测试方案

  • 直接调用Xero认证API
    若无需测试登录UI,可通过Xero的客户端凭证流获取访问令牌,直接模拟已认证状态:

    cy.request({
      method: 'POST',
      url: 'https://identity.xero.com/connect/token',
      form: true,
      body: {
        grant_type: 'client_credentials',
        client_id: '你的客户端ID',
        client_secret: '你的客户端密钥',
        scope: 'openid profile email' // 根据需求调整权限
      }
    }).then(res => {
      window.localStorage.setItem('xero_access_token', res.body.access_token);
      // 后续测试可直接使用该令牌调用业务接口
    });
    
  • 使用Xero沙箱环境
    Xero提供的沙箱环境(Sandbox)反机器人限制更宽松,适合自动化测试,可在沙箱中完成认证流程的测试验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:20:30