Модифицировать заголовки в тестовой среде Selenium - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь создать автоматизированную среду тестирования, используя specflow и selenium, и мне нужно передать основную c auth, а также информацию заголовка x-forwarded-for в браузер для некоторых тестов. Я вижу решения для браузера Browser Mobi, но кажется, что этот проект мертв. Я пытался использовать Titanium Proxy, но у меня было немало времени, чтобы заставить его работать. В основном у меня возникают проблемы с пониманием того, что мне нужно делать с сертификатами, чтобы мой веб-драйвер использовал прокси-сервер и загружал сайты без суеты. В настоящее время я не могу заставить его открывать http или https сайты. Когда я запускаю свой тестовый пример, я вижу, что браузер правильно настраивает прокси, поэтому я не думаю, что это так. Я оставил закомментированный код для вещей, которые я пытался сделать, чтобы установить сертификат, но я не уверен на 100%, что я на самом деле там делаю. Любая помощь будет оценена. В качестве альтернативы, если есть лучший, более простой способ добавить заголовки к запросу, я весь слух.

public class ProxyService
{
    private ProxyServer server;

    public int port { get; }

    public ProxyService(int port)
    {
        this.server = new ProxyServer();
        //server.CertificateManager.CreateServerCertificate("rootCert.pfx");
        //server.CertificateManager.LoadRootCertificate();
        //server.CertificateManager.CertificateEngine = Titanium.Web.Proxy.Network.CertificateEngine.BouncyCastle;
        //server.CertificateManager.TrustRootCertificate(true);
        //server.CertificateManager.EnsureRootCertificate(true,true,false);
        this.port = port;
    }

    public void AddHeader(string key, string value)
    {


    }
    private async Task OnRequest(object sender, SessionEventArgs e) => await Task.Run(
        () =>
        {
            e.HttpClient.Request.Headers.AddHeader("Authorization", "Basic xxxxxxxxxx");

        });

    public void Start()
    {
        var endpoint = new ExplicitProxyEndPoint(System.Net.IPAddress.Any, port, true);
        server.AddEndPoint(endpoint);

        server.Start();
        server.BeforeRequest += OnRequest;
    }
    public void Stop()
    {
        server.Stop();
    }
}
...