Skip to main content
Cypress应用

代理配置

Cypress需要互联网访问才能正常工作。许多公司要求使用企业代理来访问互联网。如果您的公司有此要求,在配置Cypress使用代理之前,许多功能将无法使用:

  • Cypress无法加载除localhost之外的网页。
  • Cypress无法在baseUrl不可用时发出警告。
  • Cypress无法连接Cypress Cloud进行登录或记录测试运行。
  • npm install cypress在下载Cypress二进制文件时可能会失败。

如果您遇到上述任何或所有问题,可能需要为Cypress配置代理。以下是针对macOSLinuxWindows的配置说明。

caution

目前不支持代理自动配置(PAC)文件。如果您的组织使用PAC文件,请联系网络管理员询问应使用哪个HTTP代理访问公共互联网,然后在Cypress中使用该代理。

caution

目前不支持SOCKS代理。变通方法是在本地设置一个指向SOCKS代理的HTTP代理,然后在Cypress中使用该HTTP代理。 详细了解如何通过SOCKS转发HTTP代理。

在Linux或macOS上设置代理

在Linux或macOS上设置代理,请在运行Cypress之前在终端中执行以下命令:

export HTTP_PROXY=http://my-company-proxy.com

您还可以设置NO_PROXY来绕过某些域的代理(默认情况下,仅绕过localhost):

export NO_PROXY=localhost,google.com,apple.com

要使这些更改永久生效,可以将这些命令添加到shell的~/.profile~/.zsh_profile~/.bash_profile等)中,以便每次登录时自动运行。

在Windows上设置代理

安装后启动时,Cypress默认会尝试加载Windows注册表中配置的代理。 了解如何在Windows中系统范围内设置代理。

info

首次下载Cypress时,cypress命令行工具_不会_从Windows注册表读取代理设置。如果需要配置代理以使安装工作,必须按照以下说明设置适当的环境变量。

您也可以在运行Cypress之前设置代理环境变量以覆盖Windows注册表。这也是为cypress install定义代理的唯一方法。在命令提示符中,定义所需的环境变量如下:

set HTTP_PROXY=http://my-company-proxy.com

在PowerShell中实现相同效果:

$env:HTTP_PROXY = "http://my-company-proxy.com"

要保存HTTP_PROXY变量并在所有新shell中使用代理,请使用setx

setx HTTP_PROXY http://my-company-proxy.com

代理环境变量

caution

本节指的是操作系统的环境变量,不是Cypress环境变量

Cypress自动读取系统的HTTP_PROXY环境变量,并将该代理用于所有HTTP和HTTPS流量。如果设置了HTTPS_PROXY环境变量,HTTPS流量将使用该代理。

要为某些域绕过代理,可以设置NO_PROXY环境变量为逗号分隔的域名列表。默认情况下,不会代理localhost的流量。要使Cypress通过代理发送localhost的流量,请在NO_PROXY中传递<-loopback>

如果同时提供了大写和小写版本的代理设置(例如,同时设置了HTTP_PROXYhttp_proxy),将优先使用小写变量。

使用自定义证书颁发机构(CA)

caution

本节指的是npm配置变量和node环境变量,不是Cypress环境变量

Cypress在与Cypress Cloud通信时需要能够正确验证身份。通过代理连接时,通常使用自签名证书作为CA。为了处理此配置,Cypress自动读取npm配置的cafileca选项以及NODE_EXTRA_CA_CERTS node环境变量。

为了模拟npm和node的行为,Cypress首先查看cafile,然后查看ca,并使用相应的证书作为CA的替代。例如,要使用/home/person/certs/ca.crt的CA,请将以下内容添加到您的.npmrc

cafile=/home/person/certs/ca.crt

如果未设置cafileca,Cypress会查看系统环境变量NODE_EXTRA_CA_CERTS,并使用相应的证书作为可信CA的扩展。

请注意,npm配置用作替代,而node环境变量用作扩展。

查看、取消和设置环境变量

为了正确配置代理,了解如何查看当前设置的环境变量、取消不需要的环境变量以及根据操作系统设置环境变量可能会有所帮助。

Linux或macOS

为当前会话设置环境变量

export SOME_VARIABLE=some-value

取消环境变量

unset SOME_VARIABLE

echounset后将不打印任何内容:

echo $SOME_VARIABLE

查看所有当前设置的环境变量

打印所有环境变量:

env

打印名称中包含proxy(不区分大小写)的环境变量:

env | grep -i proxy

Windows

在Windows中设置环境变量取决于您使用的是_命令提示符_还是_PowerShell_。

为当前会话设置环境变量

命令提示符:

set SOME_VARIABLE=some-value

PowerShell:

$env:SOME_VARIABLE = "some-value"

为所有未来会话全局设置环境变量

setx SOME_VARIABLE some-value

在当前会话中取消环境变量

命令提示符:

set SOME_VARIABLE=

PowerShell:

Remove-Item Env:\SOME_VARIABLE

查看所有当前设置的环境变量

命令提示符:

set

PowerShell:

Get-ChildItem Env:

在Cypress中查看代理设置

可以在Cypress中查看当前的代理设置。按照以下步骤操作:

  1. 通过cypress open在Cypress中打开您的项目。
  2. 点击"Settings"选项卡。
  3. 点击"Proxy Settings"部分展开它,查看Cypress当前使用的代理设置。
桌面应用中的代理配置