如何在Selenium WebDriver中为FirefoxDriver,ChromeDriver和IEdriver执行基本身份验证?

我正在使用Selenium-Firefox-DriverSelenium-Chrome-Driver版本2.0a5(Web Driver API),并且我正在尝试测试具有BASIC身份验证的Web应用程序(当我点击任何页面时,会出现一个弹出窗口来验证用户,弹出窗口不是HTML的一部分)。

现在,我需要一个策略来在Firefox,Chrome和IE中对用户进行身份验证(我很快就会导入IE驱动程序)。

例如,我在几篇文章中读到我可以设置Firefox配置文件。像这样:

FirefoxProfile ffProfile = new FirefoxProfile();
ffProfile.setPreference("network.http.phishy-userpass-length", 255);
WebDriver driver = new FirefoxDriver(ffProfile);
driver.get("http://username:password@hostname");  

但它似乎对我不起作用。有没有人为这些浏览器提供有效的解决方案?


答案 1

我通过以下方式将其与Firefox网络驱动程序配合使用:

profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "google.com");
driver = new FirefoxDriver(profile);

driver.Navigate().GoToUrl("http://user:pwd@google.com");

答案 2

没错,目前不支持BASIC HTTP身份验证,但我现在让它适用于FF和Chrome。

我在问题中编写的代码适用于这些驱动程序。我刚刚尝试使用FF3.6作为Firefox默认浏览器(安装在Firefox文件夹中)而不是FF4(尚不支持)。对于IE,我可能会尝试通过Windows注册表禁用身份验证。

此页面 http://code.google.com/p/selenium/issues/detail?id=34 可能会有所帮助。


推荐