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

Фотография

Загрузка файла


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

#1 western666

western666

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Деревянко М.В

Отправлено 04 января 2010 - 15:17

Собственно такая трабла на сайте нужно загрузить фото, в скрипте загрузка фото идет так, использую php, phpunit :

$this->selenium->type("document.forms[1].elements[34]", "C:\\image\\test.gif");

в Mozilla Firefox, все Ок, фотка загружается, скрипт работает дальше... но в IE, Safari, GoogleChrome... Rc в логах пишет, что загрузка происходит.. (происходит процедура type, нечего не фейлится)хотя ничего не загружаеться.. Еще одна фичя, поле для загрузки файла в FF и IE,Saf..,Go.. отличается друг от друга. Может кто-то сталкивался с такой траблой? помогите плз...
  • 0

#2 KaNoN

KaNoN

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

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

Отправлено 04 января 2010 - 16:04

Собственно такая трабла на сайте нужно загрузить фото, в скрипте загрузка фото идет так, использую php, phpunit :

$this->selenium->type("document.forms[1].elements[34]", "C:\\image\\test.gif");

в Mozilla Firefox, все Ок, фотка загружается, скрипт работает дальше... но в IE, Safari, GoogleChrome... Rc в логах пишет, что загрузка происходит.. (происходит процедура type, нечего не фейлится)хотя ничего не загружаеться..

Этот вопрос уже неоднократно здесь обсуждался. Варианта 2:
1) Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера
2) Для загрузки файла открываем Firefox в unsecured режиме, вводим нужные данные, а потом уже возвращаемся к основному браузеру.

У поля ввода файла есть ограничения по безопасности. Вот из-за чего заморочка.

Еще одна фичя, поле для загрузки файла в FF и IE,Saf..,Go.. отличается друг от друга. Может кто-то сталкивался с такой траблой? помогите плз...

В смысле отличаются? Только визуально или же атрибуты разные?
  • 0

#3 western666

western666

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Деревянко М.В

Отправлено 04 января 2010 - 21:02

Собственно такая трабла на сайте нужно загрузить фото, в скрипте загрузка фото идет так, использую php, phpunit :

$this->selenium->type("document.forms[1].elements[34]", "C:\\image\\test.gif");

в Mozilla Firefox, все Ок, фотка загружается, скрипт работает дальше... но в IE, Safari, GoogleChrome... Rc в логах пишет, что загрузка происходит.. (происходит процедура type, нечего не фейлится)хотя ничего не загружаеться..

Этот вопрос уже неоднократно здесь обсуждался. Варианта 2:
1) Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера
2) Для загрузки файла открываем Firefox в unsecured режиме, вводим нужные данные, а потом уже возвращаемся к основному браузеру.

У поля ввода файла есть ограничения по безопасности. Вот из-за чего заморочка.

Еще одна фичя, поле для загрузки файла в FF и IE,Saf..,Go.. отличается друг от друга. Может кто-то сталкивался с такой траблой? помогите плз...

В смысле отличаются? Только визуально или же атрибуты разные?


Отличаются только визуально
Подскажите как организовать : Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера и второй пункт на примере .. относительно моего случая.. буду примного благодарен.. второй день уже борюсь с траблой.. заранее благодарен :drinks:
  • 0

#4 KaNoN

KaNoN

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

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

Отправлено 04 января 2010 - 22:20


В смысле отличаются? Только визуально или же атрибуты разные?


Отличаются только визуально

В-общем, визуальные различия роли не играют. Локаторы селениума, по которым собственно и находится объект, опираются на атрибуты и DOM-структуру, которая не должна отличаться в разных браузерах.

Подскажите как организовать : Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера и второй пункт на примере .. относительно моего случая.. буду примного благодарен.. второй день уже борюсь с траблой.. заранее благодарен :drinks:

В точности по вашему случаю указать трудно, так как я пока с C# не работал, но принцип общий для всех используемых селениумом языков. Вот тут рассматривается пример работы с полем ввода файла как раз за счет запуска браузера в режиме chrome. Пример написан на Java.

Но суть такова:

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

Selenium selenium = new DefaultSelenium( <тут задается хост, порт, режим и т.п.> )

В селениуме используются обертки над тестовыми движками JUnit, NUnit т.п., которые инициализацию инкапсулируют в методе setUp. Так вот, когда вам надо работать с полем ввода файла, вы можете:
1) остановить текущую сессию браузера (для этого у объекта селениума есть метод stop)
2) стартовать новую сессию, но уже конкретно указать режим *chrome
3) зайти на нужную страницу и ввести все необходимые данные
4) остановить данную сессию и начать новую сессию браузера, который используется по умолчанию.

После этого продолжаем работу теста.

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

#5 western666

western666

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Деревянко М.В

Отправлено 05 января 2010 - 06:37


В смысле отличаются? Только визуально или же атрибуты разные?


Отличаются только визуально

В-общем, визуальные различия роли не играют. Локаторы селениума, по которым собственно и находится объект, опираются на атрибуты и DOM-структуру, которая не должна отличаться в разных браузерах.

Подскажите как организовать : Использовать посылку виртуальных кодов клавиш, то есть имитация ввода с клавиатуры. Но это будет работать только в случае активного окна браузера и второй пункт на примере .. относительно моего случая.. буду примного благодарен.. второй день уже борюсь с траблой.. заранее благодарен :drinks:

В точности по вашему случаю указать трудно, так как я пока с C# не работал, но принцип общий для всех используемых селениумом языков. Вот тут рассматривается пример работы с полем ввода файла как раз за счет запуска браузера в режиме chrome. Пример написан на Java.

Но суть такова:

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

Selenium selenium = new DefaultSelenium( <тут задается хост, порт, режим и т.п.> )

В селениуме используются обертки над тестовыми движками JUnit, NUnit т.п., которые инициализацию инкапсулируют в методе setUp. Так вот, когда вам надо работать с полем ввода файла, вы можете:
1) остановить текущую сессию браузера (для этого у объекта селениума есть метод stop)
2) стартовать новую сессию, но уже конкретно указать режим *chrome
3) зайти на нужную страницу и ввести все необходимые данные
4) остановить данную сессию и начать новую сессию браузера, который используется по умолчанию.

После этого продолжаем работу теста.

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

Спасибо большое за ответ, я принцип и идею понял, но ситуация такая, закажчик хочет иметь тесты написанные на Php, которые необходимо запускать в FF, IE, Safari, Googlechrome. C проблемой загрузки файла в разных браузерах я столкнулся первый раз .. Эсли я правильно понял, нет решения для всех браузеров.. тогда остается написать ему, что этот тест можно организоваь только в FF? тоесть с другиим браузеры не судьба... если я ощибаюсь поправьте ...
  • 0

#6 KaNoN

KaNoN

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

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

Отправлено 05 января 2010 - 09:47

Спасибо большое за ответ, я принцип и идею понял, но ситуация такая, закажчик хочет иметь тесты написанные на Php, которые необходимо запускать в FF, IE, Safari, Googlechrome. C проблемой загрузки файла в разных браузерах я столкнулся первый раз .. Эсли я правильно понял, нет решения для всех браузеров.. тогда остается написать ему, что этот тест можно организоваь только в FF? тоесть с другиим браузеры не судьба... если я ощибаюсь поправьте ...

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

#7 western666

western666

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Деревянко М.В

Отправлено 05 января 2010 - 16:57

Спасибо большое за ответ, я принцип и идею понял, но ситуация такая, закажчик хочет иметь тесты написанные на Php, которые необходимо запускать в FF, IE, Safari, Googlechrome. C проблемой загрузки файла в разных браузерах я столкнулся первый раз .. Эсли я правильно понял, нет решения для всех браузеров.. тогда остается написать ему, что этот тест можно организоваь только в FF? тоесть с другиим браузеры не судьба... если я ощибаюсь поправьте ...

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


Фишка в том, что тест из загрузкой на сайт картинки является отдельным тестом ((( прийдется смериться с FF
  • 0

#8 KaNoN

KaNoN

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

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

Отправлено 05 января 2010 - 17:14

Спасибо большое за ответ, я принцип и идею понял, но ситуация такая, закажчик хочет иметь тесты написанные на Php, которые необходимо запускать в FF, IE, Safari, Googlechrome. C проблемой загрузки файла в разных браузерах я столкнулся первый раз .. Эсли я правильно понял, нет решения для всех браузеров.. тогда остается написать ему, что этот тест можно организоваь только в FF? тоесть с другиим браузеры не судьба... если я ощибаюсь поправьте ...

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


Фишка в том, что тест из загрузкой на сайт картинки является отдельным тестом ((( прийдется смериться с FF

Ну будет отдельный тест. Если остальные будут выполняться под необходимым браузером, то всё нормально. К тому же, даже если для загрузки привязка будет к ФФ, то уже верификации можно делать в другом браузере.

Опять же, если вдаться в подробности того, как этот загруженный файл будет обрабатываться, то скорее всего его обработка будет осуществлена на сервере, а ему всё равно, какой браузер используется.

Основная проблема в кросс-браузерности - это отображение элементов и работа клиентских скриптов.
  • 0


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

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