Search code examples
seleniumxamarinselenium-webdriverappium

Selenium iOS Driver behind Proxy


We are trying to run some automated tests for our Xamarin based iOS app using the Selenium IOSDriver within Visual Studio for Mac.

The error we are getting when we run them is (I've sanitised to remove the URL we are actually trying to send the request to).

A exception with a null response was thrown sending an HTTP request to the remote WebDriver server for URL https://<Test Host URL>. The status of the exception was NameResolutionFailure, and the message was: nodename nor servname provided, or not known nodename nor servname provided, or not known

Because our machines are behind a proxy we often see DNS errors like this when the code sending the request is unaware of the proxy.

We've tried various approached to setting the proxy, such as HttpClient.DefaultProxy and OpenQA.Selenium.Proxy but the error still persists.

Are there any other ways to tell Selenium that it is operating behind a proxy?


Solution

  • For anyone else struggling with this the answer seemed to be using a 'HttpCommandExecutor'

            var uri = new Uri("https://hub.browserstack.com/wd/hub/");
            var commandExecutor = new HttpCommandExecutor(uri, TimeSpan.FromSeconds(30))
            {
                Proxy = new WebProxy
                {
                    Address = new Uri("http://your.proxy")
                }
            };
    
            driver = new IOSDriver<IOSElement>(commandExecutor, options);