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

Фотография

работа с диалоговыми окнами Windows


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

#1 Crow

Crow

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

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

Отправлено 18 января 2011 - 13:28

Здравствуйте!
возникла такая проблема: есть сайт, на сайте есть кнопка SelectFile, при нажатии на которую открывается стандартный виндовый диалог выбора и открытия файла. Нужно как то его обработать: вставить путь к файлу и нажать кнопку Open.
Почитала форум, поняла, что средствами Selenium это сделать похоже нельзя.
Подскажите, какие есть варианты решения проблемы?
Есть, насколько я знаю класс java.awt.Robot, но там нет удобного способа вставить путь к файлу в окно (хотя может я просто его не нашла). Можно это сделать с помощью WinAPI, но я не знаю, как работать с WinAPI в Java... Есть ли еще какие то варианты?
Заранее спасибо за помощь!
  • 0

#2 stmark

stmark

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

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 18 января 2011 - 13:42

1. Практически во всех ситуациях срабатывал простой type с указанием полного пути до файла.
2. Можно использовать дополнительные инструменты автоматизации, например AutoIt.
3. Если все способы слишком затратны, то из автоматизации этот тест можно убрать и прогонять его вручную, иногда это самый эффективный вариант.
  • 0

#3 Crow

Crow

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

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

Отправлено 18 января 2011 - 14:11

использование type не сработало, поскольку не могу определить XPATH, про AutoIT надо подумать... Убрать этот тест никак не получится.
  • 0

#4 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 18 января 2011 - 15:10

1. Практически во всех ситуациях срабатывал простой type с указанием полного пути до файла.

В большинстве ситуаций подобное не поможет, так как это стандартное ограничение по безопасности в браузерах. Подобный трюк проворачивается в Firefox (unsecured mode) и, возможно, Chrome. В остальном это не работает.

2. Можно использовать дополнительные инструменты автоматизации, например AutoIt.

Для начала лучше посмотреть, можно ли воспользоваться готовыми библиотеками для имитации действий, например java.awt.Robot или что-то подобное. Только потом уже стоит посмотреть в сторону вспомогательного инструмента. Это нужно, чтобы не городить зоопарк инструментов по поводу и без повода.

3. Если все способы слишком затратны, то из автоматизации этот тест можно убрать и прогонять его вручную, иногда это самый эффективный вариант.

Обычно из-за подобных тривиальных проблем такого не делают. Обычно вышеуказанные варианты помогают.
  • 0

#5 stmark

stmark

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

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 18 января 2011 - 15:33

В большинстве ситуаций подобное не поможет, так как это стандартное ограничение по безопасности в браузерах. Подобный трюк проворачивается в Firefox (unsecured mode) и, возможно, Chrome. В остальном это не работает..


Это да, Вы правы, почему-то в голове крутилось IDE, который только firefox и признает.

Для начала лучше посмотреть, можно ли воспользоваться готовыми библиотеками для имитации действий, например java.awt.Robot или что-то подобное. Только потом уже стоит посмотреть в сторону вспомогательного инструмента. Это нужно, чтобы не городить зоопарк инструментов по поводу и без повода.


1. Я отвечал на вопрос "Есть ли еще какие то варианты?", а этот способ автор уже указал.
2. Жмякать кнопки не видя что происходит - очень не стабильный вариант, хотя конечно и не "городит зоопарк".

Обычно из-за подобных тривиальных проблем такого не делают. Обычно вышеуказанные варианты помогают.


Опять же, я отвечал на вопрос "Есть ли еще какие то варианты?"

P.S. Кстати знаю многих, кто использует связку Selenium+AutoIt, что позволяет решить множество проблем.
  • 0

#6 Crow

Crow

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

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

Отправлено 18 января 2011 - 15:42

А можно про связку Selenium+AutoIt поподробнее? Не знаю, к сожалению, как это сделать...
Можно как то встроить автоайтишный код в Java или как то еще?
  • 0

#7 stmark

stmark

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

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 18 января 2011 - 16:03

Можно это сделать вот так.
  • 0

#8 Crow

Crow

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

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

Отправлено 19 января 2011 - 12:04

Спасибо! То что надо. Другие способы оказались куда более трудоемкими.
  • 0

#9 vitorg

vitorg

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

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

Отправлено 19 января 2011 - 17:22

Всё что вам нужно можно сделать, пользуясь только нативными методами SeleniumRC. Кода немного и лишних прикруток в виде AutoIt не будет и тест будет кроссплатформенным а также более контролируемым.
Также не забывайте про java.awt.Robot - собственно его и использует сам SeleniumRC.
  • 0

#10 Crow

Crow

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

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

Отправлено 20 января 2011 - 21:58

Ну, к сожалению таких методов я не нашла, если подскажете, буду признательна :)
Robot оказался крайне неудобным, поскольку у него мало методов. Есть еще один робот, с более широким возможностями, в библиотеке Abbot, но она не стандартная и мне не удалось ее нормально подключить...
  • 0

#11 vitorg

vitorg

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

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

Отправлено 21 января 2011 - 05:11

Ну, к сожалению таких методов я не нашла, если подскажете, буду признательна :)

DefaultSelenium#typeNative, например.
  • 0

#12 vitorg

vitorg

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

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

Отправлено 21 января 2011 - 06:56

Robot оказался крайне неудобным, поскольку у него мало методов.

Да, возможностей у него немного, но всё что нужно для решения вашей задачи есть. Также не забывайте, что тест и браузер могут выполняться на физически разных машинах, это надо учитывать при использовании Robot.
  • 0


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

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