Я использую Selenium, чтобы сделать кое-что. Я использовал следующий код для ввода текста в текстовое поле textarea
:
def clear_and_send_key_then_wait(element, key, sleep_time = 1):
# For some reason this does not work
# element.clear()
# This works
element.send_keys(Keys.CONTROL + "a");
element.send_keys(Keys.DELETE);
# Input text
element.send_keys(key)
time.sleep(sleep_time)
target_textbox = driver.find_element_by_xpath(
"""/html/body/div[2]/div/div[2]/div[1]/div[4]/div[1]/div/textarea""")
clear_and_send_key_then_wait(target_textbox, 'z'*100000)
Q1: Почему element.clear()
не удаляет существующий текст в текстовом поле?
Поскольку в текстовое поле нужно набирать много текстов, описанный выше метод слишком медленный. Вместо этого я использую первый Javascript метод execute_script
предложенный здесь .
Однако простое выполнение следующего не заполняет текстовое поле.
driver.execute_script("arguments[0].value=arguments[1];",
target_textbox, "z"*100000)
Текст появляется только после следующей команды send_key
, следующей сразу за строкой execute_script
:
driver.execute_script("arguments[0].value=arguments[1];",
target_textbox, "z"*100000)
target_textbox.send_keys(Keys.ENTER)
Q2: Почему требуется следующий target_textbox.send_keys(Keys.ENTER)
? Вроде как в ссылке автору не нужно отправлять клавишу ввода. Это другой тип текстового поля? Если да, то каковы различные типы текстовых полей, и все ли они имеют различное поведение?
Заранее спасибо!