День добрый,
Помогите решить проблему.
Необходимо ввести текст в СkEditor, но увы, текст не вводится
Вот часть 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")
Ошибку не выдает, но к сожалению, текст не вводится и как видимо клик так же не производится.
Подскажите, пожалуйста, как ввести туда текст
Может быть дело в том что вы пытаетесь впихнуть текст в тэг “p”?
polusok
(Mykhailo Poliarush)
27.Май.2015 15:51:42
#3
Помниться уже были похожие темы
Добрый день! Подскажите пожалуйста, как можно с помощью селениума (webdriver и IDE) ввести текст в Wysiwyg editor? Для примера можно использовать http://drupal.fckeditor.net/demo или визивик создания темы на данном форуме. Заранее благодарен.
Добрый день.
Совсем не хотелось создавать дубликат темы Selenium и Wysiwyg editor (или как вставить текст в визивик) , но, как показывает практика, все случаи разные.
Так вот в чём моя проблема: на странице 3 фрейма iframe class=“wysihtml5-sandbox”, и webdriver всё никак не хочет switchTo любой фрейм не по индексу, не по webElement. ID нет.
Код до вставки текста и сохранения:
[изображение]
Вот после сохранения:
[изображение]
Так вот, как мне можно перейти во фрейм и послать текст?
Спасибо большое за внимание.
Всем, доброе время суток!
Пишу тут впервые, поэтому не судите строго. Есть проблема, с помощью Selenium Webdriver (немного пишу на Java) не могу ввести текст в редактор tinymce. Есть следующий код страницы:
<iframe id="news_globalize_translations_attributes_ru_content_ifr" frameborder="0" src="javascript:allowtransparency="true" title="Rich Text AreaPress ALT-F10 for toolbar. Press ALT-0 for help" style="width: 100%; height: 100px; display: block;">
#document
<!DOCTYPE >
<html>
<head xmlns="http://www.w3.org/1999/xhtml">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"></meta>
<link href="http://my.20.local/javascripts/ti…
polusok
(Mykhailo Poliarush)
27.Май.2015 15:53:20
#4
А если дадите страницу с примером ckeditor и полный код тест, то можно запустить и попробовать решить вашу проблему
в тег также пробовал, но увы
Увы, но в открытом доступе нет ресурса. Завтра на работе посмотрю, что и как можно сделать с примером редактора. Конечно, сначала почитаю тему предложенные Вами
send_keys будет работать нормально ток с элементами input, textarea и подобными. Скорее всего вы что то упускаете из виду. Нужно смотреть код страницы. Как вариант может подойти ввод текста через JS.
vdovinets
(Сергей Вдовинец)
28.Май.2015 15:18:08
#8
brutusimpuls:
В тесте я по XPATH определяю iframe.
CkEditorFrame = driver.find_element_by_xpath(".//*[@id=‘cke_1_contents’]/iframe")
Потом переключаюсь в него
driver.switch_to_frame(CkEditorFrame)
Переключись с помощью
driver.switchTo().frame(driver.findElement(By.className("cke_wysiwyg_frame")));
vdovinets
(Сергей Вдовинец)
28.Май.2015 15:28:29
#9
Имею ввиду используй не ID, а имя класса, для переключения на фрейм
Спасибо всем за ответы и советы
Решил проблему следующим образом:
Вместо:
driver.find_element_by_xpath(“html/body/p”).send_keys(“some text”)
использую
driver.find_element_by_tag_name(“body”).send_keys(“some_text”)
Я сделал так!
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’)
_clear_and_send_keys_to_element(textarea, text)
def _clear_and_send_keys_to_element(el, text):
remove_keys = u’\b’ * 1000
el.send_keys(remove_keys)
el.send_keys(text)