Стандартный диалог для сохранения файла - как с ним быть?
#1
Отправлено 07 апреля 2009 - 12:18
Подскажите решение такого вопроса: как селениумом обработать появление стандартного диалога для сохранения фвйла?
Ситуация такая:
1) Жмем кнопочку
2) Появляется диалог "Что делать с этим файлом"
Попробовала всякие assert alert, assert confirmation, answer on next promt - не то.
Кто знает, как это победить, поделитесь пожалуйста.
Спасибо)
#2
Отправлено 07 апреля 2009 - 12:39
#3
Отправлено 07 апреля 2009 - 13:16
Не поняла((
#5
Отправлено 08 апреля 2009 - 09:10
#6
Отправлено 27 апреля 2009 - 11:40
Итак, хочу нажать Enter после появления этого же окошка.
Пишу:
selenium.click("//div[@id='ctl00_mainContent_ChainExpandableComposite_PushGrid1_collapser_ExportPanel']/a[3]");
//тут появляется диалог для работы с файлом, пытаюсь нажать Enter
selenium.keyPressNative("13");
Результат:
com.thoughtworks.selenium.SeleniumException: ERROR: Problem during keyDown: Invalid key code
at com.thoughtworks.selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrError(HttpCommandProcessor.java:97)
at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:91)
.....
Или я использую не тот код клавиши?
Или нужно как-то управлять фокусом и предварительно его переместить (опять же, как это сделать пока не понимаю...) ?
Подскажите плиз.
#7
Отправлено 27 апреля 2009 - 13:00
события нажатия клавиш будут посланы в текущее активное окно
#8
Отправлено 28 апреля 2009 - 09:07
у enter код 10, посмотреть можно например здесь http://java.sun.com/...yEvent.VK_ENTER
события нажатия клавиш будут посланы в текущее активное окно
Странно, но не работает, хотя и ошибок не пишет.
Фокус перемещается на нужное мне окно, но принажатии enter ничего не менятся.
хм.
Пробую использовать код 1005 - в вашей ссылке он отвечает за кнопку DOWN, чтобы проверить, передаются ли события вообще в это окно. Валится ошибка с invalid code number.
Есть еще Esc с кодом 27 - с ней та же беда, что с Enter.
#9
Отправлено 28 апреля 2009 - 14:20
вам нужны значения констант из java.awt.event.KeyEvent, down вы где-то не там посмотрелиСтранно, но не работает, хотя и ошибок не пишет.
Фокус перемещается на нужное мне окно, но принажатии enter ничего не менятся.
хм.
Пробую использовать код 1005 - в вашей ссылке он отвечает за кнопку DOWN, чтобы проверить, передаются ли события вообще в это окно. Валится ошибка с invalid code number.
Есть еще Esc с кодом 27 - с ней та же беда, что с Enter.
а тестируемое окно точно активно? активно в понимании ОС, а не селениума
а пробовали KeyDownNative + KeyUpNative
#10
Отправлено 29 апреля 2009 - 10:01
вам нужны значения констант из java.awt.event.KeyEvent, down вы где-то не там посмотрели
а тестируемое окно точно активно? активно в понимании ОС, а не селениума
а пробовали KeyDownNative + KeyUpNative
Спасибо за помощь!
В итоге проблема свелась к тому, что keyPressNative надо жать после небольшой задержки после selenium.click("LoadFileButton").
ПыСы: код кнопки Down = 40
=)
#11
Отправлено 30 июня 2009 - 16:55
то селен ругается invalid key code
#12
Отправлено 01 июля 2009 - 08:25
В php есть тот же метод keyPressNative, с selenium RC в папке php есть хелп глянь егоподскажите, а как подобную штуку сделать на пхп, если вот появляется окошко сохранения файла мозиловское и к примеру если юзать $this->doCommand("keyPressNative","10");
то селен ругается invalid key code
#13
Отправлено 01 июля 2009 - 10:36
public function keyPressNative($keycode)В php есть тот же метод keyPressNative, с selenium RC в папке php есть хелп глянь егоподскажите, а как подобную штуку сделать на пхп, если вот появляется окошко сохранения файла мозиловское и к примеру если юзать $this->doCommand("keyPressNative","10");
то селен ругается invalid key code
{
$this->doCommand("keyPressNative", array($keycode));
}
Делаю $this->doCommand("keyPressNative", array(10)); всё прокатывает нормально энтер нажимается
Пытаюсь заюзать другую кнопку например нажать вниз то есть $this->doCommand("keyPressNative", array(1005)); опять пишет инвалид кейкод
#14
Отправлено 01 июля 2009 - 12:12
#15
Отправлено 01 июля 2009 - 12:39
http://java.sun.com/...yEvent.VK_ENTER смотрел вот этоА) Внутрь его не глядел)
Что за код 1005???
Вот коды: http://msdn.microsof...y/ms927178.aspx
и там энтер 10 а по твоей ссылке 10 это шифт
#16
Отправлено 02 июля 2009 - 12:30
хотя лучше смотреть по твоей ссылке, но ты не то глянул, код кнопки down - 40
#17
Отправлено 28 октября 2009 - 09:23
А не подскажите, какую задержку лучше использовать в данной ситуации?Спасибо за помощь!
В итоге проблема свелась к тому, что keyPressNative надо жать после небольшой задержки после selenium.click("LoadFileButton").
Thread.sleep() как-то не очень хочется использовать в связи с константным значением задержки. Вот что-нибудь ждущее загрузки окна лучше бы...
А вот еще вопросик по этой же теме.
Если во время прохождения теста выбран браузер, как активное окно, то диалог сохранения сам станет активным при появлении и проблем нет. А вот если в это время я делаю что-либо другое, то этот диалог активным не становится и ничего соответственно не сохраняется. Реально ли как-нибудь выбрать его принудительно? Как я понял этот диалог не браузеровский и селениум с ним работать не может. Есть варианты, кроме использования API?
#18
Отправлено 28 октября 2009 - 14:39
У нас использовался обходной маневр. Мы создали профайл в Firefox, в котором указали, что файлы определенного типа автоматически загружаются в определенный каталог, причем без появления диалога сохранения. После этого, когда нам надо что-то загрузить, то вся задача сводится к тому, что надо кликнуть на ссылку и подождать, пока в заданном каталоге не появится новый файл.А не подскажите, какую задержку лучше использовать в данной ситуации?Спасибо за помощь!
В итоге проблема свелась к тому, что keyPressNative надо жать после небольшой задержки после selenium.click("LoadFileButton").
Thread.sleep() как-то не очень хочется использовать в связи с константным значением задержки. Вот что-нибудь ждущее загрузки окна лучше бы...
А вот еще вопросик по этой же теме.
Если во время прохождения теста выбран браузер, как активное окно, то диалог сохранения сам станет активным при появлении и проблем нет. А вот если в это время я делаю что-либо другое, то этот диалог активным не становится и ничего соответственно не сохраняется. Реально ли как-нибудь выбрать его принудительно? Как я понял этот диалог не браузеровский и селениум с ним работать не может. Есть варианты, кроме использования API?
Если же используется браузер, отличный от Firefox, то специально для этого случая отдельно стартовался Firefox в незащищенном режиме и выполнялись все необходимые для загрузки файла действия.
#19
Отправлено 28 октября 2009 - 14:57
В итоге так и сделали =)У нас использовался обходной маневр. Мы создали профайл в Firefox, в котором указали, что файлы определенного типа автоматически загружаются в определенный каталог, причем без появления диалога сохранения. После этого, когда нам надо что-то загрузить, то вся задача сводится к тому, что надо кликнуть на ссылку и подождать, пока в заданном каталоге не появится новый файл.
Если же используется браузер, отличный от Firefox, то специально для этого случая отдельно стартовался Firefox в незащищенном режиме и выполнялись все необходимые для загрузки файла действия.
Спасибо!
#20
Отправлено 30 ноября 2009 - 09:58
Есть сайт, на котором в виде списка данных во фрейме отображаются предложения (объявления), при попытке сдеть прокрутку по типу $this->keyPress("", "\34"); - ничего не работает скрипт просто виснет.
Как обойти проблему?
Как выполнить прокрутку?
Пишутся тесты на пхп.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных