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

Фотография

Не получается прикрепить файл


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

#1 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 19 марта 2013 - 09:48

Не получается прикрепить файл.
Записала в Selenium IDE действия по прикреплению с тем, чтобы использовать потом в Webdriver, выглядит так
    driver.findElement(By.name("fileData")).clear();
    driver.findElement(By.name("fileData")).sendKeys("C:\\Users\\Public\\Pictures\\Sample Pictures\\Tulips.jpg");
Но Webdriver упорно игнорит эту команду.
Можно как-то выкрутиться?
  • 0

#2 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 19 марта 2013 - 11:04

как-то так


Создайте переменную
String path="C:\\Users\\Public\\Pictures\\Sample Pictures\\Tulips.jpg";
File f = new File(path);
WebElement fileInput = driver.findElement("xxxxx");
fileInput.sendKeys(f.getAbsolutePath());
  • 1

#3 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 19 марта 2013 - 11:27

Спасибо!!! Круто! Заработало :yahoo:
  • 0

#4 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 19 марта 2013 - 11:38

а нельзя ли прикрепить сразу несколько файлов?

а то второй файл таким же методом прикрепляться не хочет (скорее всего это связано с xpath кнопки - в IDE он каждый раз изменялся при добавлении нового файла)
  • 0

#5 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 19 марта 2013 - 11:52

а нельзя ли прикрепить сразу несколько файлов?

а то второй файл таким же методом прикрепляться не хочет (скорее всего это связано с xpath кнопки - в IDE он каждый раз изменялся при добавлении нового файла)


причем здесь кнопка ?
Конечно, если добавляется новое инпут-поле для него нужен другой локатор. Скрорее всего вы используете "name("fileData")". А это не верно, т.к. уже сущетвуют 2 инпут-поля с такими локаторами
  • 0

#6 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 19 марта 2013 - 12:54

Конечно, если добавляется новое инпут-поле для него нужен другой локатор. Скрорее всего вы используете "name("fileData")". А это не верно, т.к. уже сущетвуют 2 инпут-поля с такими локаторами


Изначально локатор такой:
//div[@class='k-button k-upload-button']
Как должен выглядеть локатор для второго инпут-поля?
Что-то вроде
"(//input[//div[@class='k-button k-upload-button')]][2]")
?
  • 0

#7 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 19 марта 2013 - 13:41

Изначально локатор такой:

//div[@class='k-button k-upload-button']
Как должен выглядеть локатор для второго инпут-поля?
Что-то вроде
"(//input[//div[@class='k-button k-upload-button')]][2]")
?

Если изначально локатор такой //div[@class='k-button k-upload-button']
То будет как-то так:
(//div[@class='k-button k-upload-button'])[2]

Но я так никогда не делал :)
  • 0

#8 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 19 марта 2013 - 14:40

То будет как-то так:
(//div[@class='k-button k-upload-button'])[2]

Но я так никогда не делал :)

Не хочет так работать
  • 0

#9 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 19 марта 2013 - 14:45

эм.., а если вручную добавить 1 файл и посмотреть как будет выглядеть поле для 2го, 3го.
К стати, а у меня так driver.findElement(By.name("fileData")).sendKeys("C:\\Users\\Public\\Pictures\\Sample Pictures\\Tulips.jpg"); работаетю Это разница в реализации аплоад полей или это из-за Хрома? В ФФ не проверял
  • 0

#10 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 19 марта 2013 - 15:00


То будет как-то так:
(//div[@class='k-button k-upload-button'])[2]

Но я так никогда не делал :)

Не хочет так работать


ну тогда, как говорил appmen "добавить 1 файл и посмотреть как будет выглядеть поле для 2го, 3го."


Это разница в реализации аплоад полей или это из-за Хрома? В ФФ не проверял

Это обычная реализация загрузки, в FF тоже будет работать
  • 0

#11 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 20 марта 2013 - 08:57

как-то так


Создайте переменную
String path="C:\\Users\\Public\\Pictures\\Sample Pictures\\Tulips.jpg";
File f = new File(path);
WebElement fileInput = driver.findElement("xxxxx");
fileInput.sendKeys(f.getAbsolutePath());


Не пойму, как такое может быть. Вчера все работало, сегодня точно такой код упорно работать не хочет... Проверила локаторы, 10 раз проверила на предмет ошибок, все нормально...
Почему оно перестало работать(((
  • 0

#12 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 20 марта 2013 - 12:27

путь к файлу верно прописан ?
  • 0

#13 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 20 марта 2013 - 12:43

путь к файлу верно прописан ?


верно...
  • 0

#14 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 20 марта 2013 - 13:50

ну, а шибку какую выдаёт? Элемент не найден, нот кликабл, ещё что-то. Бывает, что разработчики добавили иФрэйм и элемент не находится. Проверьте, не появился ли он на пути к полю
  • 0

#15 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 20 марта 2013 - 14:43

ну, а шибку какую выдаёт? Элемент не найден, нот кликабл, ещё что-то. Бывает, что разработчики добавили иФрэйм и элемент не находится. Проверьте, не появился ли он на пути к полю


Проблема решилась очень просто, заменой локатора.
Вот локаторы "//div[@class='k-button k-upload-button']" и даже "//*[@id='general']/div[2]/div/div/div", которые прекрасно находили элемент через firepath, упорно не подходили.
Изменила на ".//*[@id='general']/div[2]/div/div/div/input" (который кстати в firepath не определялся) и все заработало.
Еще раз спасибо за помощь.
  • 0

#16 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 30 апреля 2013 - 14:07

Может кто сталкивался.
При повторном вызове метода в пределах одного теста тест падает с ошибкой "Element not found in the cache - perhaps the page has changed since it was looked up".
Первый раз метод работает безотказно.
Сам метод:
	public void AddFileToDocument(WebElement element) {
		element.click();
		String path="C:\\Users\\Public\\Pictures\\Sample Pictures\\Tulips.jpg";
		File f = new File(path);
		WebElement fileInput = buttonAddFileToDocument;
		fileInput.sendKeys(f.getAbsolutePath());               //Проблема, судя по всему, именно в этой строке
		ButtonOKEditDocument.click();
        }
Как заставить этот метод работать повторно?

P.S. Как временное решение помогло добавить задержку в 3 секунды. Может есть лучше решение?

Сообщение отредактировал O'Leen: 30 апреля 2013 - 15:04

  • 0

#17 Boltick

Boltick

    Специалист

  • Members
  • PipPipPipPipPip
  • 596 сообщений
  • ФИО:Алексей
  • Город:планета Земля

Отправлено 02 мая 2013 - 13:07

Может кто сталкивался.
При повторном вызове метода в пределах одного теста тест падает с ошибкой "Element not found in the cache - perhaps the page has changed since it was looked up".
Первый раз метод работает безотказно.

Как заставить этот метод работать повторно?

P.S. Как временное решение помогло добавить задержку в 3 секунды. Может есть лучше решение?

Добавьте ожидание загрузки этого элемента или в крайнем случае - проверку его наличия.

Ну и хорошо было бы знать точно в какой строчке вылетает exception.
  • 0
Алексей Булат
Про Тестинг


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

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