Отправка ключей с помощью Splinter

Я хочу протестировать поле автозаполнения с помощью Splinter. Мне нужно отправить клавиши «вниз» и «ввод» в браузер, но у меня возникают проблемы с этим.

В настоящее время я нахожу поле ввода и успешно набираю «tes» в это поле.

context.browser.find_by_xpath(\\some\xpath\).first.type('tes')

Далее я хочу отправить несколько клавиш в браузер, в частности клавишу «вниз» (для выбора первого предложения автозаполнения), а затем отправить клавишу «ввод», чтобы выбрать этот элемент автозаполнения.

Я пробовал обширные поиски и не могу понять, как это сделать.

Я даже пробовал javascript

script = 'var press = jQuery.Event("keypress"); press.keyCode = 34; press.keyCode = 13;'
context.browser.execute_script(script)

но это ничего не дало к сожалению

пакеты, которые я использую:

django 1.6 django-behave == 0.1.2 осколок 0.6

текущая конфигурация:
из splinter.browser import Браузер из django.test.client import Client

context.browser = Browser('chrome')
context.client = Client()

person lukeaus    schedule 10.02.2015    source источник


Ответы (1)


Вы можете отправить ключи, переключившись на активный элемент:

from selenium.webdriver.common.keys import Keys

context.browser.find_by_xpath('//input[@name="username"]').first.type('test')
active_web_element = context.browser.driver.switch_to_active_element()  
active_web_element.send_keys(Keys.PAGE_DOWN)
active_web_element.send_keys(Keys.ENTER)

Активным элементом будет последний элемент, с которым вы взаимодействовали, поэтому в данном случае это поле, которое вы ввели.

switch_to_active_element() возвращает selenium.webdriver.remote.webelement.WebElement, а не splinter.driver.webdriver.WebDriverElement, поэтому, к сожалению, вы не можете напрямую вызвать send_keys для возвращаемого значения find_by_*(...).

person Blaise    schedule 20.02.2017
comment
Всем, кто сталкивается с проблемами с модальными окнами: вы можете выбрать модальное окно по идентификатору, а затем отправить Keys.ESCAPE, чтобы избавиться от него. - person alextsil; 11.05.2018