Загрузите файл в IE11 с классами Selenium и Robot - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь загрузить файл в IE11 с помощью Selenium WebDriver и класса Robot, я использую IntelliJ и запускаю тестирование на Selenium Grid с IE11.

Я не использую функцию element.click (), потому что элементы управления на этом останавливаются, поэтому я использую sendKeys, чтобы сосредоточиться на кнопке donwload.Появится всплывающее окно загрузки, вот идет класс роботов.Я пытаюсь нажать Alt+S, чтобы сохранить файл с помощью робота, но он не нажимает Alt+S в IE, вместо этого он нажимает Alt+S на моем IntelliJ !!!Вот мой код:

if (webBrowser.equalsIgnoreCase("ie")) {
   WebElement downloadReport = webDriver.findElement(By.id("clientReportDownload"));
   try {
        Robot robot = new Robot();
// sendKeys to focus on Download button and press Enter to download
        downloadReport.sendKeys("");
        downloadReport.sendKeys(Keys.ENTER);
        waitSeconds(2);
// wait for Download popup
        robot.setAutoDelay(250);
// simulate presse Alt + S to save file  -> It presses Alt+S on IntelliJ instead !!!
        robot.keyPress(KeyEvent.VK_ALT);
        robot.keyPress(KeyEvent.VK_S);
        robot.keyRelease(KeyEvent.VK_ALT);
        robot.keyRelease(KeyEvent.VK_S);
        waitSeconds(2);
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }

У кого-нибудь есть решение для этого?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Итак, я понял, что после нажатия кнопки «Скачать» фокус на веб-браузере как-то теряется, поэтому мне нужно снова установить фокус на веб-браузере перед запуском команд Robo, например:

(JavascriptExecutor)webDriver.executeScript("window.focus();");

тогда симуляция нажатия клавиш работает!

0 голосов
/ 23 мая 2018

Вы должны сначала нажать кнопку.вы можете попробовать, он отлично работает для меня

           driver.findElement(By.id("element_id")).click(); 
           Robot robot = new Robot();  // Robot class throws AWT Exception  
           Thread.sleep(2000); // Thread.sleep throws InterruptedException  
           robot.keyPress(KeyEvent.VK_DOWN);  // press arrow down key of keyboard to navigate and select Save radio button  

           Thread.sleep(2000);  // sleep has only been used to showcase each event separately   
           robot.keyPress(KeyEvent.VK_TAB); 
           Thread.sleep(2000);  
           robot.keyPress(KeyEvent.VK_TAB); 
           Thread.sleep(2000);  
           robot.keyPress(KeyEvent.VK_TAB); 
           Thread.sleep(2000);  
           robot.keyPress(KeyEvent.VK_ENTER);
...