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

Фотография

опять про селениум и файл диалоги


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

#1 phunq

phunq

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:ВА

Отправлено 04 августа 2011 - 10:48

подниму опять тему про файлдиалоги и отсутвие доступа к ним из селениума

если с сохранением файла с фаерфоксом можно решить проблему путем настройки дефолтного пути, то как приложить файл на аплоад непонятно
читал про запуск паралельных скриптов autoit - правда не совсем понятно как это работает - никогда с ним раньше не работали

и возник вопрос - возможно ктото применял подход - управлять диалогом браузера прямо из java? (програмно записать путь к файлу и нажать кнопку)
понятно что универсально для всех браузеров написать сложно - но для начала хватило бы решения для фаерфокса

поделитесь опытом реально ли это и может быть ктото уже делал подобные вещи?

и вообще как решаете проблему работы с openfile dialog и savefile dialog ?
  • 0

#2 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 04 августа 2011 - 11:35

Я как раз таки решал проблему через AutoIt, но интересно узнать и о других возможных решениях.
  • 0

#3 BoBuS

BoBuS

    Активный участник

  • Members
  • PipPip
  • 83 сообщений
  • Город:Москва


Отправлено 04 августа 2011 - 11:45

может так?

selenium.type("locator", "/var/www/file.log");
только запускать как *chrome
  • 0

#4 phunq

phunq

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:ВА

Отправлено 04 августа 2011 - 11:48

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


а для справки, пожалуйста, расскажите еще и про autoit...
  • 0

#5 phunq

phunq

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:ВА

Отправлено 04 августа 2011 - 11:50

может так?

selenium.type("locator", "/var/www/file.log");
только запускать как *chrome


честно говоря не понял о чем речь

в поля для ввода адреса записывать не получится - у браузеров есть защиты от интернет-ботов, которые портят ссылки
  • 0

#6 BoBuS

BoBuS

    Активный участник

  • Members
  • PipPip
  • 83 сообщений
  • Город:Москва


Отправлено 04 августа 2011 - 11:56


может так?

selenium.type("locator", "/var/www/file.log");
только запускать как *chrome


честно говоря не понял о чем речь

в поля для ввода адреса записывать не получится - у браузеров есть защиты от интернет-ботов, которые портят ссылки


защиты от ботов, которые портят ссылки? эт как?
  • 0

#7 phunq

phunq

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:ВА

Отправлено 04 августа 2011 - 12:11



может так?

selenium.type("locator", "/var/www/file.log");
только запускать как *chrome


честно говоря не понял о чем речь

в поля для ввода адреса записывать не получится - у браузеров есть защиты от интернет-ботов, которые портят ссылки


защиты от ботов, которые портят ссылки? эт как?


ну мы пробовали вводит путь прямо в поле в браузере - в конце там автоматом приписывлася некий символ, после чего файл не находился
  • 0

#8 BoBuS

BoBuS

    Активный участник

  • Members
  • PipPip
  • 83 сообщений
  • Город:Москва


Отправлено 04 августа 2011 - 12:26

Как пробовали вводить? Лучше строчку приведите
Какой символ приписывался?
  • 0

#9 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 04 августа 2011 - 12:35

Что-то вроде такого для Opera:
focus(fieldLocator);
keyDownNative(String.valueOf(KeyEvent.VK_SPACE));
Thread.sleep(2000);
typeNative(fileLocator);
keyPressNative(String.valueOf(KeyEvent.VK_ENTER));

Для IE:
click(fieldLocator);
Thread.sleep(2000);
typeNative(fileLocator);
keyPressNative(String.valueOf(KeyEvent.VK_ENTER));
Для других браузеров ещё проще, хотя возможно для полной кроссплатформенности и придётся поподбирать последовательность. Никакой серьёзной проблемы там нет, разве что для нормальной реализации надо ещё в Selenium добавить метод uploadFile для перекидки файлов на сторону RC - в случае если тесты и RC запущены не на одной машине. Никаких костылей типа AutoIt не нужно конечно.
  • 0

#10 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 04 августа 2011 - 12:39

ну мы пробовали вводит путь прямо в поле в браузере - в конце там автоматом приписывлася некий символ, после чего файл не находился

Скорее всего этот символ сами и вводили. Нет в браузерах такой защиты, есть защита только от манипуляций с полем <input type="file"> из JavaScript.
  • 0

#11 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 04 августа 2011 - 14:54

Нативные методы... Переходите уже на 2.0 :)
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#12 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 04 августа 2011 - 15:41

На 2.0 всё-таки пока рановато делать глобальный переход, слишком много workaround'ов придётся использовать, пусть ещё немного стабилизируется :)
  • 0

#13 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 04 августа 2011 - 16:46

Кто не хочет рисковать -- достаточно переписать несколько тестов, в которых нужно делать аплоад файлов.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#14 phunq

phunq

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:ВА

Отправлено 05 августа 2011 - 04:56

Нативные методы... Переходите уже на 2.0 :)


а что сделано в 2,0 для работы с файловыми диалогами? мы как раз с нуля внедряем 2,0
  • 0

#15 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 05 августа 2011 - 20:19

WebDriver имеет полноценную поддержку для аплоад-диалогов.
Просто делаете fileInputField.sendKeys(pathToYourFile) -- и всё работает.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#16 phunq

phunq

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:ВА

Отправлено 08 августа 2011 - 05:42

WebDriver имеет полноценную поддержку для аплоад-диалогов.
Просто делаете fileInputField.sendKeys(pathToYourFile) -- и всё работает.



fileInputField - это что? поле для ввода файла файлового диалога браузера?
если так - то как его определить?

у webdriver я такого метода или поля не вижу... если можно разъясните поподробнее(если можно с примерами) - гугл ничего конкретного не говорит

так же интересно есть ли какие то методы у webdriver для работы с savefileddialog
конечно для фаерфокса его можно закрывать с помощью java robot, но есть надежда что и для этого чтото было реализовано
  • 0

#17 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 08 августа 2011 - 06:53

Да, это поле input типа file.

WebElement fileInput = driver.findElement(By.name("file_1"));
fileInput.sendKeys(pathToYourFile);


А вот для download поддержки пока нет.
  • 1
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#18 phunq

phunq

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:ВА

Отправлено 08 августа 2011 - 08:02

Да, это поле input типа file.

WebElement fileInput = driver.findElement(By.name("file_1"));
fileInput.sendKeys(pathToYourFile);


А вот для download поддержки пока нет.


а понятно... я понадеялся несколько на другое
  • 0


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

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