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

CodeceptJS结合Appium实现UAT环境移动端Chrome basic auth配置问题

你当前配置的basicAuth参数不生效的核心原因是:CodeceptJS Appium helper的内置basicAuth配置仅适配原生应用的请求拦截场景,对Android端Chrome浏览器的网页场景不支持。Chrome for Android从80版本开始也默认拦截了URL拼接凭证的访问方式,所以你之前的尝试都会失败。

以下是两种可行的解决方案:

解决方案1:通过Chrome DevTools协议注入Authorization头(优先推荐)

该方案稳定性最高,不依赖Chrome界面元素变更。

第一步:调整Appium配置

在你现有的Appium配置中补充desiredCapabilities配置段:

exports.config = {
  output: './output',
  helpers: {
    Appium: {
      path: '/wd/hub',
      port: 4723,
      platform: 'Android',
      browserName: 'Chrome',
      url: 'https://test.co.uk/',
      show: true,
      // 新增以下配置
      desiredCapabilities: {
        'goog:chromeOptions': {
          args: ['--disable-web-security', '--allow-running-insecure-content']
        }
      }
    }
  }
}

第二步:在测试前置钩子中添加请求拦截逻辑

在测试套件的Before钩子或单条用例开头加入以下代码,自动给所有请求加上Basic Auth头:

Before(async () => {
  const cdpSession = await I.grabCDPSession();
  // 开启目标域名的请求拦截
  await cdpSession.send('Fetch.enable', {
    patterns: [{ urlPattern: 'https://test.co.uk/*' }]
  });
  // 拦截请求并注入Auth头
  cdpSession.on('Fetch.requestPaused', async (event) => {
    const authHeader = `Basic ${Buffer.from('user:pass').toString('base64')}`;
    const modifiedHeaders = [
      ...Object.entries(event.request.headers).map(([name, value]) => ({ name, value })),
      { name: 'Authorization', value: authHeader }
    ];
    await cdpSession.send('Fetch.continueRequest', {
      requestId: event.requestId,
      headers: modifiedHeaders
    });
  });
});

解决方案2:自动填充Basic Auth原生弹窗

如果CDP方案无法使用,可通过识别Chrome的Basic Auth弹窗元素自动填充,适合临时调试场景:

// 打开目标页面后执行以下步骤
I.waitFor(5);
// 输入用户名
I.fillField('//android.widget.EditText[@resource-id="com.android.chrome:id/username"]', 'user');
// 输入密码
I.fillField('//android.widget.EditText[@resource-id="com.android.chrome:id/password"]', 'pass');
// 点击确认按钮
I.click('//android.widget.Button[@resource-id="com.android.chrome:id/positive_button"]');

注意:该方案依赖Chrome版本的元素资源ID,不同版本Chrome的ID可能存在差异,需要根据你测试用的Chrome版本调整定位表达式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:18:03