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

Фотография

Помогите с загрузкой файла в форму

Загрузка

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

#1 GSS

GSS

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

  • Members
  • Pip
  • 9 сообщений

Отправлено 04 августа 2016 - 21:46

Помогите пожалуйста с загрузкой файла

 

<button class="btn btn-success" ng-disabled="isFileProcessUploading.bState" type="button">

 

            <span class="glyphicon glyphicon-file" aria-hidden="true"/>
 
            <span ng-disabled="data.formData.params[property.id].isUploading">Обрати файл</span>
 
             <!-- ngIf: data.formData.params[property.id].isUploading -->
 
<input type="file" ng-disabled="isFileProcessUploading.bState" style="display:none"/>
 
</button>
 
Input отображается до нажатия на кнопку загрузки, но когда выполняется метод driver.findElement(By.xpath(locator)).sendKeys(pathToFile); возвращает org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
Command duration or timeout: 30.10 seconds

  • 0

#2 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 05 августа 2016 - 06:59

<input type="file" ng-disabled="isFileProcessUploading.bState" style="display:none"/>

 

https://learn.javascript.ru/display


  • 0

#3 TatyanaV

TatyanaV

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

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 05 августа 2016 - 07:16

Вы бы хоть локатор свой привели. В принципе, тут достаточно wait.until с подходящим локатором.

Например:

wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input:not([style*='display:none'])[type='file']")));

п.с.: elementToBeClickable дождется и видимости элемента, и возможности с ним работать.


  • 0

#4 user12

user12

    Специалист

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


Отправлено 05 августа 2016 - 07:48

Таня, проверка в локаторе not([style*='display:none']) -  не лишняя ?

Все равно с display:none мы не сможем работать.


  • 0

#5 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 05 августа 2016 - 10:11

Таня, проверка в локаторе not([style*='display:none']) -  не лишняя ?

Все равно с display:none мы не сможем работать.

 

не лишняя, если предположить, что есть в DOM такие же поля с аттрибутом display:none)


  • 0

#6 user12

user12

    Специалист

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


Отправлено 05 августа 2016 - 10:39

 

Таня, проверка в локаторе not([style*='display:none']) -  не лишняя ?

Все равно с display:none мы не сможем работать.

 

не лишняя, если предположить, что есть в DOM такие же поля с аттрибутом display:none)

 

 

Не видя страницу предполагать можно всё, что угодно )))

Просто реально не совсем понятно, зачем усложнять локатор

input[type='file']
input:not([style*='display:none'])[type='file']

Визуально они очень сильно отличаются


  • 0

#7 GSS

GSS

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

  • Members
  • Pip
  • 9 сообщений

Отправлено 06 августа 2016 - 12:12

<input type="file" ng-disabled="isFileProcessUploading.bState" style="display:none"/>

 

Selenium не видит данный инпут, его можно сделать как то видимым и задить файл?


  • 0

#8 user12

user12

    Специалист

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


Отправлено 08 августа 2016 - 07:05

<input type="file" ng-disabled="isFileProcessUploading.bState" style="display:none"/>

 

Selenium не видит данный инпут, его можно сделать как то видимым и задить файл?

 

Ошибка по-прежнему  org.openqa.selenium.ElementNotVisibleException ?


  • 0

#9 TatyanaV

TatyanaV

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

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 08 августа 2016 - 07:17

Таня, проверка в локаторе not([style*='display:none']) -  не лишняя ?

Все равно с display:none мы не сможем работать.

В том то и проблема, что не сможем.

Если искать просто "input[type='file']" - можно наткнуться на его нерабочее состояние.

А можно просто ждать сразу доступный для взаимодействия "input:not([style*='display:none'])[type='file']".

 

<input type="file" ng-disabled="isFileProcessUploading.bState" style="display:none"/>

 

Selenium не видит данный инпут, его можно сделать как то видимым и задить файл?

Вам же написала уже - приведите, пожалуйста, пример того локатора, по которому Вы ищите. Ну и как уже написали = расшифруйте, что означает в вашем конкретном случае "не видит" (какая ошибка)? 

Не очень у нас тут хорошо с чтением мыслей на расстоянии.


  • 0

#10 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 08 августа 2016 - 08:32

Если у вас один input на странице, в качестве велосипеда попробуйте сначала сделать его видимым при помощи javascript, в стиле

el = document.getElementsByTagName('input')[0];
el.style.display = "block";

Далее совершаете свои манипуляции. Как исполнять javascript вебрайвером, надеюсь, нагуглите.


  • 0

#11 user12

user12

    Специалист

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


Отправлено 08 августа 2016 - 08:38

Если искать просто "input[type='file']" - можно наткнуться на его нерабочее состояние.

А можно просто ждать сразу доступный для взаимодействия "input:not([style*='display:none'])[type='file']".

 

 

все равно не вижу особой пользы, но логика Ваша понятно. Спасибо

 

Если у вас один input на странице, в качестве велосипеда попробуйте сначала сделать его видимым при помощи javascript, в стиле

 

 

не надо js, для решения таких простых задач.


  • 0

#12 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 08 августа 2016 - 13:18

ну вот человек говорит, что элемент невидим, а значит и sendKeys работать не будет, хоть какие локаторы там задавайте. Есть другие идеи?


  • 0

#13 TatyanaV

TatyanaV

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

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 08 августа 2016 - 13:33

ну вот человек говорит, что элемент невидим, а значит и sendKeys работать не будет, хоть какие локаторы там задавайте. Есть другие идеи?

Из первого сообщения темы:

 

Input отображается до нажатия на кнопку загрузки

Так что что-то "видимое" - там должно быть.


  • 0

#14 user12

user12

    Специалист

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


Отправлено 08 августа 2016 - 13:34

ну вот человек говорит, что элемент невидим, а значит и sendKeys работать не будет, хоть какие локаторы там задавайте. Есть другие идеи?

 

Человек должен сделать действие, чтобы элемент был видимый. Т.е. нажать на "кнопку загрузки".


  • 0

#15 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 08 августа 2016 - 14:23

 

ну вот человек говорит, что элемент невидим, а значит и sendKeys работать не будет, хоть какие локаторы там задавайте. Есть другие идеи?

 

Человек должен сделать действие, чтобы элемент был видимый. Т.е. нажать на "кнопку загрузки".

 

это ещё бабушка надвое сказала. Мало информации


  • 0



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

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