使用cypress-ntlm-auth插件时认证弹窗未填入用户名密码如何解决
Cypress NTLM认证弹窗不自动填充解决方案
- 先确认插件注册逻辑完整
- 检查
cypress/support/e2e.js文件是否已经导入命令:import 'cypress-ntlm-auth/dist/commands'; - 检查
cypress.config.js配置文件中是否正确注册了插件,参考配置如下:
如果你是通过环境变量传入认证账号密码,可先打印变量确认取值正确,避免空值或错误值导致认证失效。const { defineConfig } = require('cypress') const ntlmAuth = require('cypress-ntlm-auth/dist/plugin') module.exports = defineConfig({ e2e: { baseUrl: '你的测试站点根地址', ntlm: { hosts: [ { domain: '你的测试站点域名(不带http/https前缀,带端口的话需补充端口)', username: '你的认证账号', password: '你的认证密码', ntlmVersion: 2 // 可根据站点实际支持的版本切换为1或2 } ] }, setupNodeEvents(on, config) { // 注册ntlm插件 return ntlmAuth(config) } } }) - 检查
- 清理残留进程后重启
先杀掉所有后台运行的Cypress进程,再执行启动命令:
Windows环境执行:taskkill /IM cypress.exe /F
Mac/Linux环境执行:pkill cypress
之后再执行npx cypress-ntlm open启动测试 - 检查访问路径匹配规则
- 确保你配置的NTLM认证域名和实际访问的站点域名完全一致,包括协议(http/https)、端口号都要匹配
- 测试用例首次访问的地址必须是配置了NTLM认证的域名下的资源,插件不会对未加入hosts列表的域名注入认证信息
- 适配高版本Cypress特性
如果你开启了experimentalSessionAndOrigin特性,需要将认证域名加入experimentalOriginDependencies列表,避免跨域逻辑拦截认证信息注入
内容的提问来源于stack exchange,提问作者Delwin Horsthemke
相关产品推荐
相关产品推荐

