C# のテストプロセスがリモートの Selenium サービスに到達するためにフォワードプロキシを必要とする場合、その HTTP コマンドエグゼキューターに System.Net.WebProxy を接続します。

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 のコマンドをランナーからリモートサービスへ運びます。ブラウザー自身のウェブサイトの通信は別の接続です。それにもプロキシが必要な場合は、ブラウザーのマシンから到達できるエンドポイントを使って、ブラウザーの機能を通じて構成します。

プロキシの資格情報は中間者に対して認証されます。リモートサービスの資格情報は、引き続きプロバイダーがサポートするログインまたは機能の構成に属します。

関連記事