当 C# 测试进程需要通过正向代理访问远程 Selenium 服务时,请将 System.Net.WebProxy 附加到其 HTTP 命令执行器上:

using System;
using System.Net;
using OpenQA.Selenium.Remote;

var commandProxy = new WebProxy("http://proxy.example:8080")
{
    Credentials = proxyCredentials
};
var executor = new HttpCommandExecutor(
    remoteWebDriverUri, TimeSpan.FromSeconds(60))
{
    Proxy = commandProxy
};

using var driver = new RemoteWebDriver(
    executor, browserOptions.ToCapabilities());

proxyCredentials 是预期的代理账户,remoteWebDriverUri 是配置好的远程服务 URI,browserOptions 包含现有的浏览器和提供商能力。当中间方不要求身份验证时,请省略 Credentials。在这种情况下,如果远程 WebDriver 服务是公开的,且允许通过公共代理访问,HTTP 代理列表可提供候选。

在构造 RemoteWebDriver 之前设置执行器的属性。创建驱动程序会启动远程会话交换;执行器在首次需要时才创建其底层 HTTP 客户端。之后再更改属性,并不能可靠地替换该客户端已经使用的处理程序。

这条路径将 WebDriver 命令从运行器传送到远程服务。浏览器自身的网站流量是单独的连接。如果它也需要代理,请通过浏览器能力进行配置,并使用可从浏览器所在机器访问的端点。

代理凭据用于向中间方进行身份验证。远程服务的凭据仍应放在提供商支持的登录或能力配置中。

相关文章