我有两个星期的问题,当我在Selenium中创建新的Firefox驱动程序时,该代理的身份验证弹出窗口会立即推送到后台。硒不能再到达那里了。您有解决问题的方法吗?我正在使用Selenium 3.141.5,Java 1.8。和Firefox 63.0.1版。
System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\geckodriver.exe");
FirefoxOptions options = new FirefoxOptions();
options.setBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
WebDriver driver = new FirefoxDriver(options);
try {
Alert alert = driver.switchTo().alert();
alert.sendKeys("Username" + Keys.TAB + "Password");
alert.accept();
driver.switchTo().defaultContent();
}catch (NoAlertPresentException e) {
e.printStackTrace();
}
driver.get("https://www.google.de/");
编辑:我使用Firefox 62.0.3版进行了测试,一切正常。
答案 0 :(得分:1)
最好的方法是避免弹出窗口。
使用自定义配置文件,这是我的设置:
FirefoxOptions options = new FirefoxOptions();
ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile selenium_profile = allProfiles.getProfile("selenium_profile");
options.setProfile(selenium_profile);
options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", sec_var.driver_path);
driver = new FirefoxDriver(options);
driver.manage().window().maximize();
使用自定义浏览器配置文件,您几乎可以使用任何设置修改,导入的证书(以避免再次出现身份验证弹出窗口),使用扩展名,...
使用URL中的发送凭据可以避免的基本身份验证弹出窗口:
driver.get("https://username:password@www.example.com");
但在Chrome中不起作用。
答案 1 :(得分:0)
我遇到了完全相同的问题,并且一直在到处研究解决方法。
这是我到目前为止所学到的内容:
custom browser profile
来保存您的凭据(@pburgr建议)可以解决问题,但是它还会积累很多意想不到的和可能不希望的浏览器配置文件信息,例如cookie,历史记录和所有内容。 底线:最有前途的方式是加载一个全新的干净浏览器配置文件,通过添加此类凭据(我不知道如何,是否可行)来更新此配置文件,然后在会话结束时丢弃此配置文件。