Как написать текст на selenium не в поле input

Есть программа на selenium. Я дошёл до момента где нужно написать заголовок и текст, но проблема в том что тип там не input, а h1 и p со span в них. Есть ли способ напечатать текст так? развёртка: введите сюда описание изображения

P.S если что у меня останавливается на том что я нажимаю на этот элемент


Ответы (1 шт):

Автор решения: Михаил Ребров

Работая с selenium'ом вы должны имитировать действия пользователя браузера.

Ваша задача на данном моменте усложняется тем, что вам нужно ввести символы не в текстовое поле, а в элемент с атрибутом contenteditable и в данный элемент не так просто ввести текст, его для начала, грубо говоря, нужно "активировать" - кликнув на него мышкой. Тогда фокус и курсор будет перемещен в выбраный элемент и мы можем осуществлять ввод.

В селениуме нам нужно сделать тоже самое

  1. Открываем страницу
  2. находим элемент
  3. кликаем по нему
  4. при необходимости стираем вложенные данные
  5. вводим текст
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
# не забудьте заменить url
driver.get("https://www.your.site/")

# находим элемент на странице
header = driver.find_element_by_css_selector("h1.wp-block-post-title")

# кликаем по нему
header.click()

# вот так можно стереть символ, отправив кнопку BACKSPACE
header.send_keys(Keys.BACKSPACE)

# повторив это столько раз, сколько символов в тексте 
# мы сотрем все что было введено до нас
for i in range(0, len(header.text)):
    header.send_keys(Keys.BACKSPACE)

# а вот так можно ввести что-то своё
header.send_keys("Hello from Selenium!")
→ Ссылка