Перейти к содержимому

Фотография

Обработка OS Popups используя Selenium Webdriver (Java)


  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 Vikonder

Vikonder

    Новый участник

  • Members
  • Pip
  • 31 сообщений

Отправлено 13 ноября 2018 - 07:56

Камрады!

 

Задача обработать через UI pop-up операционной системы, для операций типа Import/Export

Речь идет о файлах excel

Т.е. нужно из меню Web- аппликации выбрать пункт Import/Export и в окошке всплывабщего окна выбрать Save/Browse..

 

Прикрепленный файл  Export.jpg   31,27К   0 Количество загрузок:

 

Selenium не обрабытывает такое событие.

Попытался сделать вот так  (ставлю внешнюю ссылку)

 

Export:

public class TestPassDownloadPopupDialogUseRobot {

    public static void main(String[] args) throws InterruptedException, AWTException, IOException {

        System.setProperty("webdriver.gecko.driver", "C:/selenium/geckodriver.exe");

        TestPassDownloadPopupDialogUseRobot example = new TestPassDownloadPopupDialogUseRobot();

        example.passFirfoxDownloadDialogUseRobot();

    }

    /* Use java.awt.Robot class to operate Firefox download popup dialog. */
    public void passFirfoxDownloadDialogUseRobot()
    {
        WebDriver ffDriver = null;
        try
        {
            String downloadUrl = "http://www.dev2qa.com/download/326/";

            // Initiate Firefox WebDriver object.
            ffDriver = new FirefoxDriver();

            // Navigate to the download url.
            ffDriver.navigate().to(downloadUrl);

            // Create Robot object.
            Robot robotObj = new Robot();

            // Press arrow down key to select save radio button.
            Thread.sleep(2000);
            robotObj.keyPress(KeyEvent.VK_DOWN);
            robotObj.keyRelease(KeyEvent.VK_DOWN);

            // Press tab key and navigate to Save button.
                Thread.sleep(2000);
                robotObj.keyPress(KeyEvent.VK_TAB);

            // Press down Save button.
            Thread.sleep(2000);
            robotObj.keyPress(KeyEvent.VK_ENTER);

            // Release up Save button, download process start.
            Thread.sleep(2000);
            robotObj.keyRelease(KeyEvent.VK_ENTER);

        }catch(Exception ex)
        {
            ex.printStackTrace();
        }finally
        {
            if(ffDriver!=null)
            {
                ffDriver.close();
                ffDriver = null;
            }
        }
    }

}

В результате, диалог откпывается, но ничего не происходит..

 

Для Import- пока вообще нет идей...

 

Может кто-нибудь сталкивался с такой задачей и есть более корректные решения?

 

 

 


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 13 ноября 2018 - 11:22

Двигайтесь в сторону настройки автоматического сохранения скачиваемого файла в нужную папку. Делается это через настройку профиля.

Что-то типа этого, но я давно не проверял работоспособность:

myProfile.setPreference("browser.download.dir", "путь в папку куда сохранять");  
myProfile.setPreference("browser.download.folderList", 2);
myProfile.setPreference("browser.download.useDownloadDir", true);
myProfile.setPreference("browser.download.animateNotifications", false);
myProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/excel,application/vnd.ms-excel,application/vnd.msexcel,application/zip");

По поводу инпута - погуглите что-то типа "selenium input file"


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных