Как обрабатывать всплывающее окно загрузки IE с помощью селена webdriver

Мне нужно решение, чтобы загрузить файл PDF из веб-приложения в IE11 с помощью веб-драйвера selenium. Пожалуйста, найдите ниже всплывающее окно, с которым я пытаюсь справиться.

Ниже приведены способы обработки всплывающего окна IE, но, к сожалению, ничего не помогло.

  1. Я пытался справиться с этим сценарием, используя AutoIT, используя скрипт AutoIT ниже.

    Sleep (5000)

    Локальный $hIE = WinGetHandle("[Класс: IEFrame]")

    Local $ hCtrl = ControlGetHandle ($ hIE, "", "[ClassNN: DirectUIHWND1]")

    Если WinExists($hIE,""), то

    WinActivate($ ГИЭ, "")

    ControlSend ($ hIE, "", $ hCtrl, "{F6}")

    Sleep (500)

    ControlSend ($ hIE, "", $ hCtrl, "{TAB}")

    Sleep (500)

    ControlSend ($ hIE, "", $ hCtrl, "{enter}")

    EndIf

    Sleep (25000)

Хотя вышеуказанный скрипт AutoIT работал, но после выполнения скрипта AutoIT скрипты веб-драйвера зависают. Даже обычный оператор system.out.println не выполняется после обработки всплывающего окна с использованием вышеуказанного сценария AutoIT.

  1. Я пытался обработать это всплывающее окно с помощью класса Robot, но мне не повезло, что, похоже, это тоже не сработало.

  2. Я попытался отключить это всплывающее окно IE, выполнив некоторые настройки реестра, перейдя по указанному ниже пути: HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\AttachmentExecute\

    После выполнения определенных настроек реестра это всплывающее окно успешно отключается для файлов.xlsx или.RDP, а не для файлов.PDF. Но в моем случае у меня есть тестовый пример, в котором мне нужно скачать файл.pdf и продолжить работу со скриптами веб-драйвера.

Ребята, предложение любого другого обходного пути будет с благодарностью.

Спасибо, Судхендран П.Л.

1 ответ

У меня такая же проблема. Нажмите кнопку не работает должным образом в этом случае с IE. Я переключил кнопку для фокусировки sendKeys() а затем нажав клавишу Enter.

Попробуй это:

Robot robot;
try {
        // pressing download button
        button.sendKeys("""");
        robot = new Robot();
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

        // handling download
        webDriver.wait(2000);
        robot.keyPress(KeyEvent.VK_ALT);
        robot.keyPress(KeyEvent.VK_S);
        webDriver.wait(200);
        robot.keyRelease(KeyEvent.VK_S);
        robot.keyRelease(KeyEvent.VK_ALT);
    } catch (Exception e) {
        e.printStackTrace();
    }

Ты можешь использовать Thread.sleep() вместо driver.wait() и должен работать так же.

Другие вопросы по тегам