2013-12-19 6 views
0

Я написал пару тестов, используя селен для моего сайта. Тем не менее, я не нашел способ проверить входное текстовое поле, заполненное автозавершением. В качестве примера я хочу выбрать одно из мест, которое отображается в раскрывающемся списке автозаполнения.Как проверить автозаполнение с использованием селена и Python

Это то, что я до сих пор:

driver.find_element_by_id("id_location_0").send_keys("Free City") 
driver.find_element_by_id("ui-active-menuitem").click() 

Как автозаполнение/Авто предлагают тестирование достигается с помощью селена Python?

ПРИМЕЧАНИЕ: Поиск Google - хороший пример того, что я пытаюсь сделать.

+0

Вы имеете в виду автоматическую полную функциональность веб-браузера? Почему вы хотите проверить это? Это не часть вашего приложения, не так ли? Если речь идет о некотором вызове AJAX, вам нужно подождать, пока не появится меню. 'time.sleep (...)' может быть вашим другом между двумя линиями find_element_by_id. – mawimawi

+0

Это не функция автозаполнения браузера. Автозаполнение является частью приложения. Значения извлекаются из базы данных. – Frankline

+0

При извлечении из базы данных вам определенно нужно немного подождать, прежде чем найти элемент «ui-active-menuitem». Selenium слишком быстр и не видит элемент, потому что он еще не загружен из базы данных. Дайте time.sleep (1) попробовать, он должен помочь. – mawimawi

ответ

0

Это действительно зависит от приложения, но в целом, как идти либо:

Посмотрите, какой тип элементов приведены в авто полный список, в случае Google это пролеты в таблице, так вы должны сделать что-то вроде

driver.find_element_by_css_selector("css selector that matches all the auto complete suggestions) 

другой вариант для Google является использование KeyDown события для выбора опции и клавишу ввода, чтобы подтвердить, как ваш выбор

+0

Keydown не работает постоянно для меня. Enter отправляет страницу. Вкладка работала один раз на одном поле, но это все. –

0

Следующий код работает для меня:

driver.find_element_by_id("id_location_0").send_keys("Free City") 
element_to_hover_over = driver.find_element_by_css_selector("ul.ui-autocomplete > :first-child ") 
hover = ActionChains(driver).move_to_element(element_to_hover_over) 
hover.perform() 
driver.find_element_by_id("ui-active-menuitem").click() 

Я уверен, что это может быть каким-то образом оптимизировано.

+0

Это код, используемый в текущих документах: 'self.selenium.find_elements_by_css_selector ('. Yourlabs-autocomplete [data-input-id =" id_fieldname-autocomplete "] [data-value]')' Кажется, что не работает для меня .. Только вернул пустой список, но, возможно, это поможет кому-то другому. –

Смежные вопросы