Всплывающее окно аутентификации уходит на задний план Selenium, Firefox - PullRequest
0 голосов
/ 28 ноября 2018

У меня была проблема в течение 2 недель, когда я создаю новый драйвер Firefox в Selenium, всплывающее окно аутентификации для прокси-сервера немедленно отодвигается на задний план.Селен не может достичь этого там больше.У вас есть решение проблемы?Я использую 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, все работает там.

1 Ответ

0 голосов
/ 28 ноября 2018

Лучший способ - избежать всплывающего окна.

  1. нажмите Win + R, запустите «firefox -p» и создайте новый профиль (назовем его selenium_profile)
  2. запуститеFirefox в selenium_profile, войдите в прокси-сервер и сохраните свои учетные данные в Firefox
  3. , используйте настроенный профиль, есть мои настройки:

    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.

...