How to override basic authentication in selenium2 chrome driver? I am facing an issue in my project where chrome "Authentication required" popup is coming which is blocking webdriver to continue navigation. Please find the attached screenshot for the same. I am using following code to instantiate chrome driver,
private WebDriver driver;
@Override
protected void setUp() throws Exception {
super.setUp();
System.setProperty("webdriver.chrome.driver", "C:/Selenium/chromedriver.exe");
driver = new ChromeDriver();
}
@Override
protected void tearDown() throws Exception {
// TODO Auto-generated method stub
super.tearDown();
}
Could you please help -
Thanks,
I've struggled with the same problem over an hour and finally @kenorb's solution rescued me. To be short you need to add a browser extension that does the authentication for you (since Selenium itself can't do that!).
Here is how it works for Chrome and Python:
background.js
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
scheme: "http",
host: "YOU_PROXY_ADDRESS",
port: parseInt(YOUR_PROXY_PORT)
},
bypassList: ["foobar.com"]
}
};
chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});
function callbackFn(details) {
return {
authCredentials: {
username: "YOUR_PROXY_USERNAME",
password: "YOUR_PROXY_PASSWORD"
}
};
}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: ["<all_urls>"]},
['blocking']
);
Don't forget to replace YOUR_PROXY_* to your settings.
manifest.json
{
"version": "1.0.0",
"manifest_version": 2,
"name": "Chrome Proxy",
"permissions": [
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"<all_urls>",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
},
"minimum_chrome_version":"22.0.0"
}
Add the created proxy.zip as an extension
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_extension("proxy.zip")
driver = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=chrome_options)
driver.get("http://google.com")
driver.close()
That's it. For me that worked like a charm. If you need to create proxy.zip dynamically or need PHP example then go to the original post
I think you're talking about using NTLM Authentication (windows integrated authentication) not Basic Authentication (where you provider your credentials in URL). Assuming that here is what you can try for running NTML auth in chrome:
Go to Internet Explorer, and open "Internet Options". Follow following steps:
After these changes, your chrome authentication should work. If you're wondering that how IE settings effect chrome behavior then, Chrome uses IE security settings for authentication.
Some good resources / credits:
Add your site to Local intranet and don't change anything for user authentication. By default, second option (Automatic logon only in Intranet sites) is selected.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With