Отключите всплывающее окно "Восстановить страницы? Chrome не завершил работу правильно". в selenium webdriver Java

Хотя я видел некоторые связанные вопросы, я задаю этот вопрос снова, поскольку я все еще сталкиваюсь с проблемой. У меня есть веб-сайт, который запрашивает код подтверждения входа в систему при первом входе в систему, а затем не запрашивает его при последующих попытках входа. Если я не использую настраиваемый профиль браузера, сайт будет запрашивать код подтверждения каждый раз, когда селен запускает логин. Следовательно, я использовал индивидуальный профиль браузера, как показано ниже (это не вопрос)

options.addArguments("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\default");

Затем, после завершения теста, я выхожу из браузера, используя

driver.quit();

Проблема в том, что в следующий раз, когда я снова запускаю тест, браузер Chrome открывается со всплывающим окном "Восстановить страницы? Chrome не завершил работу правильно". и сайт снова запрашивает код подтверждения после входа в систему. Ввод кода подтверждения не является частью моего сценария, поэтому сценарий не работает. Затем я закрываю браузер вручную, щелкнув X в верхнем углу. Затем я снова запускаю тест, браузер Chrome открывается. Обычно без всплывающего окна, и сайт не запрашивает код подтверждения, вход в систему прошел успешно. затем скрипт сам закрывает браузер с помощью driver.quit(). Затем я снова запускаю тест, браузер Chrome открывается со всплывающим окном, и тест снова не выполняется. Это показывает, что driver.quit() неправильно закрывает браузер. Я пробовал несколько настроек, но всплывающее окно все равно появляется.

  1. файл настроек -> "exit_type":"none" (а также "нормальный") и exit cleanly = true
  2. настройки сайта -> всплывающие окна и перенаправления -> Заблокировано (рекомендуется)
  3. Я также пытался проверить, существуют ли предупреждения, но там написано "Нет предупреждений". Скрипт не распознает всплывающее окно как предупреждение.

Как я могу убедиться, что браузер открывается ОБЫЧНО каждый раз после того, как driver.quit() закрывает браузер в предыдущем тестовом запуске? Пожалуйста помоги.

Ниже мой код: я использую расширение Chrome, поэтому я также не могу отключить расширение.

        String extFilePath = "C:\\ChromeDriver\\Salesforce_inspector.crx";

        System.setProperty("webdriver.chrome.driver","C:\\chromedriver\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addExtensions(new File(extFilePath));
        options.addArguments("--disable-notifications");
        options.addArguments("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\default");
        options.addArguments("--start-maximized");

        WebDriver driver = new ChromeDriver(options);


        try 
        { 
            driver.switchTo().alert(); 
            System.out.println("alert accepted"); 
        }   // try 
        catch (NoAlertPresentException Ex) 
        { 
            System.out.println("No alert");
        }           

        driver.get("salesforce url");

Я не хочу использовать режим инкогнито, потому что мне нужно сохранить файлы cookie и пароли, чтобы предотвратить проблему с кодом подтверждения входа, упомянутую ранее.

1 ответ

Я решил эту проблему, установив для параметра exit_type значение normal в настройках после настройки каталога пользователя.

        Map<String, Object> prefs = new HashMap<String, Object>();
        prefs.put("profile.exit_type", "Normal");
        options.setExperimentalOption("prefs", prefs);

В вашем случае будет примерно так

        String extFilePath = "C:\\ChromeDriver\\Salesforce_inspector.crx";

    System.setProperty("webdriver.chrome.driver","C:\\chromedriver\\chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.addExtensions(new File(extFilePath));
    options.addArguments("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\default");
    options.addArguments("--start-maximized");
    Map<String, Object> prefs = new HashMap<String, Object>();
    prefs.put("profile.exit_type", "Normal");
    options.setExperimentalOption("prefs", prefs);

    WebDriver driver = new ChromeDriver(options);


    try 
    { 
        driver.switchTo().alert(); 
        System.out.println("alert accepted"); 
    }   // try 
    catch (NoAlertPresentException Ex) 
    { 
        System.out.println("No alert");
    }           

    driver.get("salesforce url");
Другие вопросы по тегам