Как отправить ключи на ввод без потери фокуса? - PullRequest
1 голос
/ 24 января 2020

У меня есть поле HTML <input>, которое выдает предложения автозаполнения при вводе пользователем. Я хотел бы сделать автоматический тест, в котором драйвер Selenium вводит некоторые ключи, а затем проверяет содержимое выпадающего списка автозаполнения. Проблема в том, что если я использую метод Selenium send_keys, <input> теряет фокус и выпадающий список исчезает . Есть ли способ ввести ключи в элемент <input> без потери фокуса?

Я сделал минималистичный пример c:

from selenium import webdriver

class TestLogin():
    def setup_method(self, method):
        self.driver = webdriver.Chrome()
        self.vars = {}

    def teardown_method(self, method):
        self.driver.quit()

    def test_minimalistic_registration(self):
        self.driver.get("https://boxing-registration.herokuapp.com/")
        self.driver.find_element_by_id("email-input").send_keys("lala")
        print("done")

Вы можете поставить точку останова на последнем и видим, что фокус элемента <input> потерян.

1 Ответ

2 голосов
/ 24 января 2020

В примере приложения, которое вы предоставили, фокус остается на вводе электронной почты. Вы можете проверить это, используя код ниже:

driver.get("https://boxing-registration.herokuapp.com/")
email = driver.find_element_by_id("email-input")
email.send_keys("lala")
active_element = driver.execute_script("return document.activeElement")
print(active_element.get_attribute("outerHTML"))
assert active_element == email

Вы можете попробовать использовать ActionChains, пример:

ActionChains(driver).send_keys_to_element("lala").click(dropdown_list).perform()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...