Загрузка файла
#1
Отправлено 04 января 2010 - 15:17
$this->selenium->type("document.forms[1].elements[34]", "C:\\image\\test.gif");
в Mozilla Firefox, все Ок, фотка загружается, скрипт работает дальше... но в IE, Safari, GoogleChrome... Rc в логах пишет, что загрузка происходит.. (происходит процедура type, нечего не фейлится)хотя ничего не загружаеться.. Еще одна фичя, поле для загрузки файла в FF и IE,Saf..,Go.. отличается друг от друга. Может кто-то сталкивался с такой траблой? помогите плз...
#2
Отправлено 04 января 2010 - 16:04
Этот вопрос уже неоднократно здесь обсуждался. Варианта 2:Собственно такая трабла на сайте нужно загрузить фото, в скрипте загрузка фото идет так, использую php, phpunit :
$this->selenium->type("document.forms[1].elements[34]", "C:\\image\\test.gif");
в Mozilla Firefox, все Ок, фотка загружается, скрипт работает дальше... но в IE, Safari, GoogleChrome... Rc в логах пишет, что загрузка происходит.. (происходит процедура type, нечего не фейлится)хотя ничего не загружаеться..
1) Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера
2) Для загрузки файла открываем Firefox в unsecured режиме, вводим нужные данные, а потом уже возвращаемся к основному браузеру.
У поля ввода файла есть ограничения по безопасности. Вот из-за чего заморочка.
В смысле отличаются? Только визуально или же атрибуты разные?Еще одна фичя, поле для загрузки файла в FF и IE,Saf..,Go.. отличается друг от друга. Может кто-то сталкивался с такой траблой? помогите плз...
#3
Отправлено 04 января 2010 - 21:02
Этот вопрос уже неоднократно здесь обсуждался. Варианта 2:Собственно такая трабла на сайте нужно загрузить фото, в скрипте загрузка фото идет так, использую php, phpunit :
$this->selenium->type("document.forms[1].elements[34]", "C:\\image\\test.gif");
в Mozilla Firefox, все Ок, фотка загружается, скрипт работает дальше... но в IE, Safari, GoogleChrome... Rc в логах пишет, что загрузка происходит.. (происходит процедура type, нечего не фейлится)хотя ничего не загружаеться..
1) Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера
2) Для загрузки файла открываем Firefox в unsecured режиме, вводим нужные данные, а потом уже возвращаемся к основному браузеру.
У поля ввода файла есть ограничения по безопасности. Вот из-за чего заморочка.В смысле отличаются? Только визуально или же атрибуты разные?Еще одна фичя, поле для загрузки файла в FF и IE,Saf..,Go.. отличается друг от друга. Может кто-то сталкивался с такой траблой? помогите плз...
Отличаются только визуально
Подскажите как организовать : Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера и второй пункт на примере .. относительно моего случая.. буду примного благодарен.. второй день уже борюсь с траблой.. заранее благодарен
#4
Отправлено 04 января 2010 - 22:20
В-общем, визуальные различия роли не играют. Локаторы селениума, по которым собственно и находится объект, опираются на атрибуты и DOM-структуру, которая не должна отличаться в разных браузерах.
В смысле отличаются? Только визуально или же атрибуты разные?
Отличаются только визуально
В точности по вашему случаю указать трудно, так как я пока с C# не работал, но принцип общий для всех используемых селениумом языков. Вот тут рассматривается пример работы с полем ввода файла как раз за счет запуска браузера в режиме chrome. Пример написан на Java.Подскажите как организовать : Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера и второй пункт на примере .. относительно моего случая.. буду примного благодарен.. второй день уже борюсь с траблой.. заранее благодарен
Но суть такова:
где-то вначале теста практически всегда (по-хорошему) создается объект селениума. Это выглядит как
Selenium selenium = new DefaultSelenium( <тут задается хост, порт, режим и т.п.> )
В селениуме используются обертки над тестовыми движками JUnit, NUnit т.п., которые инициализацию инкапсулируют в методе setUp. Так вот, когда вам надо работать с полем ввода файла, вы можете:
1) остановить текущую сессию браузера (для этого у объекта селениума есть метод stop)
2) стартовать новую сессию, но уже конкретно указать режим *chrome
3) зайти на нужную страницу и ввести все необходимые данные
4) остановить данную сессию и начать новую сессию браузера, который используется по умолчанию.
После этого продолжаем работу теста.
Вот основной принцип. Я бы предпочел все-таки придерживаться его, так как он менее зависим от используемой платформы.
#5
Отправлено 05 января 2010 - 06:37
Спасибо большое за ответ, я принцип и идею понял, но ситуация такая, закажчик хочет иметь тесты написанные на Php, которые необходимо запускать в FF, IE, Safari, Googlechrome. C проблемой загрузки файла в разных браузерах я столкнулся первый раз .. Эсли я правильно понял, нет решения для всех браузеров.. тогда остается написать ему, что этот тест можно организоваь только в FF? тоесть с другиим браузеры не судьба... если я ощибаюсь поправьте ...В-общем, визуальные различия роли не играют. Локаторы селениума, по которым собственно и находится объект, опираются на атрибуты и DOM-структуру, которая не должна отличаться в разных браузерах.
В смысле отличаются? Только визуально или же атрибуты разные?
Отличаются только визуальноВ точности по вашему случаю указать трудно, так как я пока с C# не работал, но принцип общий для всех используемых селениумом языков. Вот тут рассматривается пример работы с полем ввода файла как раз за счет запуска браузера в режиме chrome. Пример написан на Java.Подскажите как организовать : Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера и второй пункт на примере .. относительно моего случая.. буду примного благодарен.. второй день уже борюсь с траблой.. заранее благодарен
Но суть такова:
где-то вначале теста практически всегда (по-хорошему) создается объект селениума. Это выглядит как
Selenium selenium = new DefaultSelenium( <тут задается хост, порт, режим и т.п.> )
В селениуме используются обертки над тестовыми движками JUnit, NUnit т.п., которые инициализацию инкапсулируют в методе setUp. Так вот, когда вам надо работать с полем ввода файла, вы можете:
1) остановить текущую сессию браузера (для этого у объекта селениума есть метод stop)
2) стартовать новую сессию, но уже конкретно указать режим *chrome
3) зайти на нужную страницу и ввести все необходимые данные
4) остановить данную сессию и начать новую сессию браузера, который используется по умолчанию.
После этого продолжаем работу теста.
Вот основной принцип. Я бы предпочел все-таки придерживаться его, так как он менее зависим от используемой платформы.
#6
Отправлено 05 января 2010 - 09:47
Не совсем так. Тот механизм, что я описал, не машает запускать тесты под нужным браузером. Просто определенные действия, в частности загрузка и сохранение файлов, будут выполняться именно под Firefox. Необязательно тест целиком ограничивать, если загрузка файла - это только одна маленькая часть проверяемого функционала.Спасибо большое за ответ, я принцип и идею понял, но ситуация такая, закажчик хочет иметь тесты написанные на Php, которые необходимо запускать в FF, IE, Safari, Googlechrome. C проблемой загрузки файла в разных браузерах я столкнулся первый раз .. Эсли я правильно понял, нет решения для всех браузеров.. тогда остается написать ему, что этот тест можно организоваь только в FF? тоесть с другиим браузеры не судьба... если я ощибаюсь поправьте ...
#7
Отправлено 05 января 2010 - 16:57
Не совсем так. Тот механизм, что я описал, не машает запускать тесты под нужным браузером. Просто определенные действия, в частности загрузка и сохранение файлов, будут выполняться именно под Firefox. Необязательно тест целиком ограничивать, если загрузка файла - это только одна маленькая часть проверяемого функционала.Спасибо большое за ответ, я принцип и идею понял, но ситуация такая, закажчик хочет иметь тесты написанные на Php, которые необходимо запускать в FF, IE, Safari, Googlechrome. C проблемой загрузки файла в разных браузерах я столкнулся первый раз .. Эсли я правильно понял, нет решения для всех браузеров.. тогда остается написать ему, что этот тест можно организоваь только в FF? тоесть с другиим браузеры не судьба... если я ощибаюсь поправьте ...
Фишка в том, что тест из загрузкой на сайт картинки является отдельным тестом ((( прийдется смериться с FF
#8
Отправлено 05 января 2010 - 17:14
Ну будет отдельный тест. Если остальные будут выполняться под необходимым браузером, то всё нормально. К тому же, даже если для загрузки привязка будет к ФФ, то уже верификации можно делать в другом браузере.Не совсем так. Тот механизм, что я описал, не машает запускать тесты под нужным браузером. Просто определенные действия, в частности загрузка и сохранение файлов, будут выполняться именно под Firefox. Необязательно тест целиком ограничивать, если загрузка файла - это только одна маленькая часть проверяемого функционала.Спасибо большое за ответ, я принцип и идею понял, но ситуация такая, закажчик хочет иметь тесты написанные на Php, которые необходимо запускать в FF, IE, Safari, Googlechrome. C проблемой загрузки файла в разных браузерах я столкнулся первый раз .. Эсли я правильно понял, нет решения для всех браузеров.. тогда остается написать ему, что этот тест можно организоваь только в FF? тоесть с другиим браузеры не судьба... если я ощибаюсь поправьте ...
Фишка в том, что тест из загрузкой на сайт картинки является отдельным тестом ((( прийдется смериться с FF
Опять же, если вдаться в подробности того, как этот загруженный файл будет обрабатываться, то скорее всего его обработка будет осуществлена на сервере, а ему всё равно, какой браузер используется.
Основная проблема в кросс-браузерности - это отображение элементов и работа клиентских скриптов.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных