Есть сайт где можно аплодить файли для подальшей обработки.
Есть функционал upload файла. Пока файл заплодиться итд - ето я все сделал и похендлил с помощью guava - вейтери работают на ура - все ок.
Но все же возникла, казалось б тревиальная проблема Selenium тестов - как похендлить upload pop up для загрузки файла. Путь к файлу имееться для каждого теста.
Вот вкриншот места, от куда откриваеться етот поп апчик:
После того как откриваеться нативное окно я его успешно хендлю с помощью Java Robot, но только для Firefox, так как Firefox всегда при любих обстоятельствах ставит фокус курсора вот сюда:
по етому я делаю так:
private void typeInModal(String characters) throws AWTException, InterruptedException {
StringSelection stringSelection = new StringSelection(characters);
Toolkit.getDefaultToolkit().getSystemClipboard()
.setContents(stringSelection, null);
Robot robot = new Robot();
//wait for modal opening
Thread.sleep(1000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
//wait for paste operation
Thread.sleep(1000);
robot.keyPress(KeyEvent.VK_ENTER);
}
Но такой воркераунд не работает на Google Chrome, а все потому что Chrome не ставит фокус курсора сразу на текстбокс где имя файла отображаеться. Я пробовал двигать мишку в левий верхний угол и делать клик сюда:
Один раз после клика миши в ету область(красний прямоугольник на рисунке) фокус ставиться в текстбокс и курсор доступен, а один раз не ставиться, работает рандомно. Соотвественно стабильно для FF, отстойно для Chrome.
Что можна сделать для Chrome ?
Ввести текст в html -е не получиться так как ето не стандартний browse. После uploada - я вижу в нетворке request - но так как у меня нет никакой АРІ-шки у меня нету ни документаціии по етому реквесту, ни токена, которий ему нужен.
На форме есть еще функция drag & drop файла - может как то ето похендлить можно ???