Ashish Sharma
Ashish Sharma

Reputation: 137

How to handle browser authentication in Chrome using Selenium Webdriver (C#)?

I am writing an automation script for Chrome browser in selenium web driver using C#. I got stuck in a scenario where multiple tabs are getting open in the same browser and I need to navigate to the first Tab of a browser and need to re-enter the login credentials in the authentication dialog box.

Please find the below screenshot for authorization window:

enter image description here

I am unable to navigate to the first tab and unable to pass the username & password. I found some answers in the Stackoverflow and tried in my script but nothing went right. Here is my sample code:

WebDriverWait wait = new WebDriverWait(driver, 10);
IAlert alert = wait.Until(ExpectedConditions.AlertIsPresent());
alert.SetAuthenticationCredentials(username, pwd);

After executing the above code, the following error is coming:

WebDriverWait has some invalid arguments. Argument '2': cannot convert from 'int' to 'System.TimeSpan'

Is there any specific code for Chrome browser? I am using Visual studio 2008.

Upvotes: 4

Views: 17330

Answers (4)

PARTH MODI
PARTH MODI

Reputation: 55

Here is a simple approach to overcome this issue:

baseUrl = "http://" + username + ":" + password + "@" + url;
driver.get(baseUrl + "/");

Using the code above we are providing credentials in the URL, while running the script this will bypass the authentication window successfully.

Refer to the below code for how it is done just after the browser is launched:

WebDriver driver = new FirefoxDriver();
String baseUrl = "http://" + "USERNAME" + ":" + "PASSWORD" + "@" + "xyz.com";
driver.get(baseUrl + "/");

Upvotes: 0

matemaciek
matemaciek

Reputation: 621

Yet another approach: write chrome extension that'll listen on chrome.webRequest.onAuthRequired and will provide credentials.

Doc: https://developer.chrome.com/extensions/webRequest#event-onAuthRequired

Upvotes: 0

Cavan Page
Cavan Page

Reputation: 535

Try getting the URL like this...

driver.get("http://username:[email protected]");

Using the Alert class like this post here(How to handle authentication popup with Selenium WebDriver using Java) apparently only works in IE.

        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
        IAlert alert = wait.Until(ExpectedConditions.AlertIsPresent());
        alert.SetAuthenticationCredentials("username", "password")

Upvotes: 4

smit9234
smit9234

Reputation: 361

Take a look at this tutorial, http://toolsqa.com/selenium-webdriver/autoit-selenium-webdriver/

I have done this using Java, I am assuming you can use the AutoIt dlls for C# in the same manner.

Upvotes: 0

Related Questions