работа с диалоговыми окнами Windows
#1
Отправлено 18 января 2011 - 13:28
возникла такая проблема: есть сайт, на сайте есть кнопка SelectFile, при нажатии на которую открывается стандартный виндовый диалог выбора и открытия файла. Нужно как то его обработать: вставить путь к файлу и нажать кнопку Open.
Почитала форум, поняла, что средствами Selenium это сделать похоже нельзя.
Подскажите, какие есть варианты решения проблемы?
Есть, насколько я знаю класс java.awt.Robot, но там нет удобного способа вставить путь к файлу в окно (хотя может я просто его не нашла). Можно это сделать с помощью WinAPI, но я не знаю, как работать с WinAPI в Java... Есть ли еще какие то варианты?
Заранее спасибо за помощь!
#2
Отправлено 18 января 2011 - 13:42
2. Можно использовать дополнительные инструменты автоматизации, например AutoIt.
3. Если все способы слишком затратны, то из автоматизации этот тест можно убрать и прогонять его вручную, иногда это самый эффективный вариант.
#3
Отправлено 18 января 2011 - 14:11
#4
Отправлено 18 января 2011 - 15:10
В большинстве ситуаций подобное не поможет, так как это стандартное ограничение по безопасности в браузерах. Подобный трюк проворачивается в Firefox (unsecured mode) и, возможно, Chrome. В остальном это не работает.1. Практически во всех ситуациях срабатывал простой type с указанием полного пути до файла.
Для начала лучше посмотреть, можно ли воспользоваться готовыми библиотеками для имитации действий, например java.awt.Robot или что-то подобное. Только потом уже стоит посмотреть в сторону вспомогательного инструмента. Это нужно, чтобы не городить зоопарк инструментов по поводу и без повода.2. Можно использовать дополнительные инструменты автоматизации, например AutoIt.
Обычно из-за подобных тривиальных проблем такого не делают. Обычно вышеуказанные варианты помогают.3. Если все способы слишком затратны, то из автоматизации этот тест можно убрать и прогонять его вручную, иногда это самый эффективный вариант.
#5
Отправлено 18 января 2011 - 15:33
В большинстве ситуаций подобное не поможет, так как это стандартное ограничение по безопасности в браузерах. Подобный трюк проворачивается в Firefox (unsecured mode) и, возможно, Chrome. В остальном это не работает..
Это да, Вы правы, почему-то в голове крутилось IDE, который только firefox и признает.
Для начала лучше посмотреть, можно ли воспользоваться готовыми библиотеками для имитации действий, например java.awt.Robot или что-то подобное. Только потом уже стоит посмотреть в сторону вспомогательного инструмента. Это нужно, чтобы не городить зоопарк инструментов по поводу и без повода.
1. Я отвечал на вопрос "Есть ли еще какие то варианты?", а этот способ автор уже указал.
2. Жмякать кнопки не видя что происходит - очень не стабильный вариант, хотя конечно и не "городит зоопарк".
Обычно из-за подобных тривиальных проблем такого не делают. Обычно вышеуказанные варианты помогают.
Опять же, я отвечал на вопрос "Есть ли еще какие то варианты?"
P.S. Кстати знаю многих, кто использует связку Selenium+AutoIt, что позволяет решить множество проблем.
#6
Отправлено 18 января 2011 - 15:42
Можно как то встроить автоайтишный код в Java или как то еще?
#8
Отправлено 19 января 2011 - 12:04
#9
Отправлено 19 января 2011 - 17:22
Также не забывайте про java.awt.Robot - собственно его и использует сам SeleniumRC.
#10
Отправлено 20 января 2011 - 21:58
Robot оказался крайне неудобным, поскольку у него мало методов. Есть еще один робот, с более широким возможностями, в библиотеке Abbot, но она не стандартная и мне не удалось ее нормально подключить...
#11
Отправлено 21 января 2011 - 05:11
DefaultSelenium#typeNative, например.Ну, к сожалению таких методов я не нашла, если подскажете, буду признательна :)
#12
Отправлено 21 января 2011 - 06:56
Да, возможностей у него немного, но всё что нужно для решения вашей задачи есть. Также не забывайте, что тест и браузер могут выполняться на физически разных машинах, это надо учитывать при использовании Robot.Robot оказался крайне неудобным, поскольку у него мало методов.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных