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

Фотография

Из выпадающего списка не выбирается значение.

selenium python angular webdriver

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

#1 Yolly

Yolly

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

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

Отправлено 12 декабря 2017 - 12:16

Добрый день! Помогите, пожалуйста, разобраться. При прохождении автотеста после ввода в текстовое поле символов автокомплит не работает, т.к. не выпадает список и тест падает. Нужно чтобы из списка был выбран город "Владимир".

Веб страница включает в себя angularjs.

Прикрепленные файлы

  • Прикрепленный файл  l1.png   6,48К   4 Количество загрузок:
  • Прикрепленный файл  l2.png   48,49К   3 Количество загрузок:
  • Прикрепленный файл  l3.png   52,25К   4 Количество загрузок:

  • 0

#2 TatyanaV

TatyanaV

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

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


Отправлено 12 декабря 2017 - 12:32

Возможно, Ваш скрипт успевает попытаться кликнуть в элемент выпадающего списка до того как этот выпадающий список появится.

Попробуйте добавить ожидание появления элемента прежде, чем кликать по нему.

 

п.с.: локаторы у Вас убийственные просто, как Вы там сами не путаетесь?


  • 0

#3 user12

user12

    Специалист

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


Отправлено 12 декабря 2017 - 13:21

Покажи код, как ты делаешь. Список должен выпадать. Там да, могут быть другие проблемы - но список должен выпадать


  • 0

#4 Yolly

Yolly

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

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

Отправлено 12 декабря 2017 - 13:21

Задержку ставил, не помогает


  • 0

#5 Yolly

Yolly

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

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

Отправлено 12 декабря 2017 - 13:22

Список теперь выпадает, но выборка не происходит


  • 0

#6 user12

user12

    Специалист

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


Отправлено 12 декабря 2017 - 13:28

У меня похожее приложение, я делал так:

 

1. Кликнуть по полю

2.Ждать, пока появится инпут для ввода данных

3. Вводишь данные - появляется данные в списке

4. Выбор данных из списка(я делаю через sendKeys(Keys.ENTER), либо по клику на первую запись


  • 0

#7 TatyanaV

TatyanaV

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

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


Отправлено 13 декабря 2017 - 05:54

Список теперь выпадает, но выборка не происходит

"Не происходит" - понятие растяжимое. С каким экспешеном падает и по какому локатору ищете элемент в выпадающем списке? 

 

По Вашем скриншоту:

1. Вы вводите "влади"

2. Куда-то кликаете (ns-transclude)

3. Кликаете по элементу в выпадающем списке

 

При этом по скриншоту того, как выглядит все это визуально - не совсем понятно откуда берется п.2? Что это за элемент (ns-transclude)?

И покажите, пожалуйста, как в коде странице выглядит элемент, по которому Вы пытаетесь кликнуть?

Возможно "by_link_text" для него не срабатывает? Попробуйте по xpath "//*[contains(text(), 'Владимир')]".


  • 0

#8 nj_ost

nj_ost

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

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Анастасия

Отправлено 23 февраля 2018 - 06:52

Добрый день!

Столкнулась с похожей проблемой.

 

Есть форма заполнения маршрута, нужно заполнить поля "Откуда" и "Куда". При этом можно ввести название города полностью или ввести часть названия и появится выпадающий список. Выпадающий список появляется только если ввести 3 буквы. После ввода полного названия города необходимо подождать около 3-5 секунд, чтобы запрос был отработан и в поле <input name="_______" placeholder="Откуда" ng-keyup="onKeyup($event)" class="ui-autocomplete-input" autocomplete="off" css="1"> появилось название выбранного города. Пробовала использовать явные ожидания для поля name, нечего не произошло. После завершения тест поле было заполнено, но при просмотре кода страницы поле  <input name="_______"  оказывалось пустым. Попробовала ввести название города полностью, дождаться появления выпадающего списка, затем кликнуть по другому полю, не работает, т.к выпадающий список не появляется. 

 

Пример кода:

departure = driver.find_element_by_css_selector("input[placeholder='Откуда']")
departure.click()
departure.clear()
departure.send_keys("Томск")
departure_wait = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#ui-id-2')))

departure.submit()

 

Пробовала использовать:

- visibility_of_element_located

- element_to_be_clickable

- presence_of_element_located

 

Просмотрела кучу статей и видеороликов, возможно я чего-то не понимаю.

Буду благодарна за совет.


  • 0

#9 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 23 февраля 2018 - 10:05

Вам нужно выбрать город именно из списка, правильно я понимаю?

Для начала попробуйте добавить в команду departure.send_keys("Томск" + Keys.ENTER) либо departure.send_keys("Томск" + Keys.TAB), возможно тогда список появится, мне помогало.


  • 0

#10 nj_ost

nj_ost

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

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Анастасия

Отправлено 23 февраля 2018 - 13:14

Вам нужно выбрать город именно из списка, правильно я понимаю?

Для начала попробуйте добавить в команду departure.send_keys("Томск" + Keys.ENTER) либо departure.send_keys("Томск" + Keys.TAB), возможно тогда список появится, мне помогало.

Можно выбрать город из списка либо ввести его полностью. В обоих вариантах выпадающий список должен появляться.

Попробовала то, что вы предложили. Не помогло, тест упал на этапе ожидания.

Сделала этот же тест через расширение Selenium IDE для Chrome, поля заполнились, но кнопка найти все так же неактивна, т.к. поле  <input name="_______" пустое

 

Разработчик сайта указал на этот момент - ng-keyup="onKeyup($event)", предложил воспользоваться виртуальной клавиатурой.

Возможно, вы сталкивались с таким?


  • 0



Темы с аналогичным тегами selenium, python, angular, webdriver

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

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