CkEditor - не вводится текст (Webdriver + Python)

python
webdriver
Теги: #<Tag:0x00007fedbca83228> #<Tag:0x00007fedbca830c0>

#1

День добрый,
Помогите решить проблему.
Необходимо ввести текст в СkEditor, но увы, текст не вводится frowning

Вот часть HTML кода

<div id="cke_1_contents" class="cke_contents cke_reset" role="presentation" style="height: 200px;">
 <iframe class="cke_wysiwyg_frame cke_reset" frameborder="0" src="" style="width: 100%; height: 100%;" title="Визуальный текстовый редактор, documentEntityFormType_content" tabindex="0" allowtransparency="true">
  <!DOCTYPE html>
  <html lang="ru" dir="ltr">
    <head>
      <title data-cke-title="Визуальный текстовый редактор, documentEntityFormType_content">Визуальный текстовый редактор, documentEntityFormType_content</title>
      <style data-cke-temp="1">
      <link href="http://host/contents.css?t=EAPE" rel="stylesheet" type="text/css">
      <style data-cke-temp="1">
    </head>
   <body class="cke_editable cke_editable_themed cke_contents_ltr cke_show_borders" contenteditable="true" spellcheck="false">
     <p>
      <br>
     </p>
   </body>
  </html>
 </iframe>
</div>

В тесте я по XPATH определяю iframe.

CkEditorFrame = driver.find_element_by_xpath(".//*[@id='cke_1_contents']/iframe")

Потом переключаюсь в него

driver.switch_to_frame(CkEditorFrame)

Далее, кликаю по области ввода текста и отправляю текст:

driver.find_element_by_xpath("html/body/p").click()
driver.find_element_by_xpath("html/body/p").send_keys("some text")

Ошибку не выдает, но к сожалению, текст не вводится и как видимо клик так же не производится.

Подскажите, пожалуйста, как ввести туда текст


(rmerkushin) #2

Может быть дело в том что вы пытаетесь впихнуть текст в тэг "p"? smile


(Mykhailo Poliarush) #3

Помниться уже были похожие темы


(Mykhailo Poliarush) #4

А если дадите страницу с примером ckeditor и полный код тест, то можно запустить и попробовать решить вашу проблему


#5

в тег
также пробовал, но увы


#6

Увы, но в открытом доступе нет ресурса. Завтра на работе посмотрю, что и как можно сделать с примером редактора. Конечно, сначала почитаю тему предложенные Вами


(rmerkushin) #7

send_keys будет работать нормально ток с элементами input, textarea и подобными. Скорее всего вы что то упускаете из виду. Нужно смотреть код страницы. Как вариант может подойти ввод текста через JS.


(Сергей Вдовинец) #8

Переключись с помощью
driver.switchTo().frame(driver.findElement(By.className("cke_wysiwyg_frame")));


(Сергей Вдовинец) #9

Имею ввиду используй не ID, а имя класса, для переключения на фрейм


#10

Спасибо всем за ответы и советы
Решил проблему следующим образом:

Вместо:

driver.find_element_by_xpath("html/body/p").send_keys("some text")

использую

driver.find_element_by_tag_name("body").send_keys("some_text")


(Кайрат Омурбек уулу) #11

Я сделал так!
def enter_into_ckeditor(text):
source_activator = finder.find_element_by_class(
'cke_button__source_label'
)
source_activator.click()
textarea = finder.find_element_by_class('cke_source')
clearand_send_keys_to_element(textarea, text)

def clearand_send_keys_to_element(el, text):
remove_keys = u'\b' * 1000
el.send_keys(remove_keys)
el.send_keys(text)