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

Cypress谷歌认证报错‘此浏览器或应用可能不安全’问题求助

解决Cypress谷歌登录时「This browser or app may not be secure」提示问题

在使用Cypress执行谷歌登录自动化测试时,输入登录邮箱后弹出「This browser or app may not be secure」提示框,且已尝试禁用WebChromeSecurity、更换无第三方Cookie拦截的Chrome配置文件仍无法解决,可尝试以下方案:

1. 配置Chrome启动参数,模拟真实浏览器环境

谷歌的安全检测会识别自动化工具的特征,通过添加Chrome启动参数可以伪装成普通浏览器:

在cypress.config.js(或cypress.config.ts)中添加以下配置:

const { defineConfig } = require("cypress");

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('before:browser:launch', (browser = {}, launchOptions) => {
        if (browser.family === 'chromium' && browser.name !== 'electron') {
          // 禁用自动化检测特征
          launchOptions.args.push('--disable-blink-features=AutomationControlled');
          // 设置真实的用户代理
          launchOptions.args.push('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');
          // 禁用密码保存提示
          launchOptions.args.push('--disable-save-password-bubble');
          return launchOptions;
        }
        return launchOptions;
      });
    },
    // 确保已禁用Web安全
    chromeWebSecurity: false,
  },
});

2. 使用谷歌应用专用密码(适用于开启两步验证的账号)

如果测试账号开启了两步验证,直接使用账号密码会触发安全提示。需为该账号生成应用专用密码,替换测试代码中的password变量:

  • 登录谷歌账号的「安全性」设置页面
  • 找到「应用专用密码」选项(需先开启2FA)
  • 生成一个适用于「其他(自定义名称)」的密码,将其填入测试代码

3. 优化测试代码的交互逻辑

避免硬编码等待时间,改用基于元素状态的断言,同时增加输入延迟更贴近真实用户行为:

修改后的测试代码:

it('Login via Google', function() {
  cy.visit(website + 'login')
  cy.get('a[href="/connect/google"]').click()

  cy.origin('https://accounts.google.com/', { args: [email, password] }, ([email, password]) => {
    Cypress.on('uncaught:exception', (err) => {
      if (err.message.includes('RPC executor service threw an error') ||
          err.message.includes('ResizeObserver loop completed with undelivered notifications')) {
        return false
      }
      return true
    })

    function emailType() {
      cy.get('input[type="email"]')
        .should('be.visible')
        .type(email, { delay: 150 }) // 增加输入延迟
      cy.get('button:contains("Next")', { timeout: 10000 })
        .should('be.visible')
        .click()
      // 等待密码输入框出现,替代硬编码wait
      cy.get('input[type="password"]', { timeout: 15000 }).should('exist')
      passwordType()
    }

    function passwordType() {
      cy.get('input[type="password"]', { timeout: 30000 })
        .should('be.visible')
        .type(password, { delay: 150 })
      cy.get('button:contains("Next")')
        .should('be.visible')
        .click()
    }

    emailType()
  })

  cy.url().should('include', website)
})

额外提示

  • 确保测试使用的谷歌账号未被标记为「可疑登录」,可先手动登录一次验证账号状态
  • 避免在短时间内频繁执行自动化登录,触发谷歌的频率限制

内容的提问来源于stack exchange,提问作者James.Alocard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:26:03