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

Фотография

webdriver ruby Работа с полем загрузки файлов.


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

#1 Kostuan

Kostuan

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Засорин К. С.

Отправлено 27 октября 2011 - 10:50

Только разбираюсь в селениуме.
Нужно загрузить файл и проверить его наличие в посте после добавления.
Там форма загрузки как тут помогите с решением этой задачи.
И в общем какие есть решения по загрузке файлов с использованием селениума в руби?
  • 0

#2 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 27 октября 2011 - 11:06

В это поле надо ввести путь до файла обычным вводом, как в текстовое поле (не Ruby, но это не должно иметь значения):
driver.findElement(By.xpath("//input[@type='file']")).sendKeys("//path/to/some.file");

  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#3 Kostuan

Kostuan

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Засорин К. С.

Отправлено 27 октября 2011 - 11:20

Если стандартно ввод в поле такой:
element = driver.find_element(:id, 'само id').send_keys "текст"

Я сделал так в конкретно моём случает id=ext-gen1038 (но это кнопка же) и вместо текста добавил путь до файла и в итоге не работает

element = driver.find_element(:id, 'ext-gen1038').send_keys "//home/selenium/test/files/1.jpg"
  • 0

#4 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 27 октября 2011 - 11:24

А на саму страницу можно посмотреть?
И что не работает именно? Ошибки? Какие?
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#5 Kostuan

Kostuan

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Засорин К. С.

Отправлено 27 октября 2011 - 11:29

А на саму страницу можно посмотреть?
И что не работает именно? Ошибки? Какие?


там форма загрузки такая же как тут http://blogs.logicso...qa/archives/540
просто говорит что всё прошло а на самом деле открывает поиск почему то и картинку не добавляет
  • 0

#6 stmark

stmark

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

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


Отправлено 27 октября 2011 - 11:29

Я с Ruby не знаком, но вроде как есть готовый метод attach_file
Описание метода:
Пример использования:
def test_upload_image
    @selenium.open "/some_page"
    @selenium.attach_file("locator_of_an_input_field", "file:///C:/test.png") # Прикрепили файл
    @selenium.click "css=#colorBoxButton", :wait_for => :page # Нажали кнопку "Аплоад/загрузить/закачать/etc." и дожидаемся загрузки новой страницы
    @selenium.is_element_present(locator) # Проверяем наличие нужного элемента на странице, который обозначает загруженный файл
end

Код только для наглядности привел, вероятно работать не будет :)
  • 0

#7 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 27 октября 2011 - 11:35

stmark,
это для Selenium RC пример :) а у нас-то тут WebDriver!
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#8 Kostuan

Kostuan

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Засорин К. С.

Отправлено 27 октября 2011 - 11:36

Не подскажите вообще есть какой то толковый учебник по webdriver язык программирования не особо важен.. Начал на руби просто хотел прикрутить потом всё к jenkins но нормального источника информации по webdriver ruby найти не могу...
  • 0

#9 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 27 октября 2011 - 11:42

Учебников как таковых я не встречал. Есть только вики проекта:
http://code.google.c...selenium/w/list
и Google. В основном, встречаются англоязычные how-to'шки

PS И еще в ноябре будет тренинг Баранцева Алексея - в шапке форума реклама крутится :)
http://software-test...&task=3&cid=123
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#10 Kostuan

Kostuan

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Засорин К. С.

Отправлено 27 октября 2011 - 11:46

В ноябре поздно... =) Ясно спасибо и на этом буду дальше ломать мозг...
  • 0

#11 stmark

stmark

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

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


Отправлено 27 октября 2011 - 11:57

stmark,
это для Selenium RC пример :) а у нас-то тут WebDriver!


Угумс, опять промахнулся :) У нас эти места делаются через поддержку первого Selenium'а.
В случае с простым вбиванием пути до файла или инжекцией скрипта по прежнему в некоторых браузерах из-за защиты не срабатывает такой подход.
И приходится сторонние инструменты использовать, например пресловутый AutoIt.
Вроде как перед созданием\слиянием во второй Selenium, говорилось, что упростят жизнь и в этом месте.
  • 0

#12 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 27 октября 2011 - 12:11

Варианты вообще есть разные. Например, как я предложил с примером на Ruby (и там же с использованием JavaScript'a)
http://stackoverflow...ver-file-upload
С использованием WebDriverBackedSelenium (но, по-моему, эта опция доступна только для Java)
http://stackoverflow...driver-and-java
и т.д.
Надо каждый раз отталкиваться от имеющегося веб-приложения
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#13 Kostuan

Kostuan

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

  • Members
  • Pip
  • 9 сообщений
  • ФИО:Засорин К. С.

Отправлено 27 октября 2011 - 12:21

element = driver.attach_file(:id => "ext-gen1038",//home/selenium/test/files/1.jpg).click
выдаёт
syntax error, unexpected ')', expecting tASSOC
...ome/selenium/test/files/1.jpg).click

а если просто
element = driver.attach_file(:id => "ext-gen1038").click
то когда доход до выполнения этого шага ошибка:
undefined method `attach_file' for #<Selenium::WebDriver::Driver:0x7f8c0ac6c968 browser=:firefox> (NoMethodError)

Как я понимаю этот метод получается стандартно не предусмотрен?
  • 0


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

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