0

У нас есть богатый текстовый редактор в нашем приложении, который мы автоматизируем с использованием селена. Ниже приведен html для того же самого.Как вводить текст в текстовом редакторе в selenium webdriver?

<iframe style="height: 76px; width: 1004px;"></iframe> 
<html><head></head><body spellcheck="false"></body></html> 
<head></head> 
<body spellcheck="false"></body> 
<html><head></head><body spellcheck="false"></body></html> 
<iframe style="height: 76px; width: 1004px;"></iframe> 
<div class=""><iframe style="height: 76px; width: 1004px;"></iframe></div> 
<textarea class="form-control Editor" name="actionUpdate" id="actionUpdateId" style="display: none;"></textarea> 

Я пробовал несколько вариантов. После кода отлично работает на хромированной браузере

driver.switchTo().frame(0); 
WebElement el = driver.switchTo().activeElement(); 
new Actions(driver).moveToElement(el).perform(); 
driver.findElement(By.xpath("/html/body")).sendKeys("Check"); 

Однако он не работает на IE11 браузер, как он не может найти элемент с помощью XPath. Разница между обоими браузерами заключается в том, что когда я ввожу что-то в текстовое поле, используя IE, он переходит к тегу textarea. Однако в хроме он вводится в тег тела. Я попытался найти элемент, используя ID = «actionUpdateID» в IE, но он генерирует исключение, поскольку элемент не отображается, возможно, из-за стиля = «display: none;»

+0

Действительно ли это полный «XPath»? Мне это не кажется правильным. – Brian

+0

Да, это полный xpath, Поскольку я перехожу к iframe, возможно, именно поэтому он отлично работает только с/html/body –

ответ

0

С ручного ввода текста в приложение переходит в текстовое поле элемента, вы можете попытаться установить значение с помощью SendKeys к TextArea элемента селена.
При установке некоторое значение в элемента текстового поля с помощью селена, то же значение будет добавлено в богатый текстовый редактор в веб-приложении.

Но согласно вашему HTML коде текстовое поле элемент стилизован дисплей: ни, благодаря которому ваш селеном код будет сгенерировано исключение когда вы SendKeys к элементу. Это можно исправить, если атрибут изменен на inline или блок.

Таким образом, сначала нужно установить стиль текстовое поле на дисплей: встроенный, а затем установить некоторое значение элемента с помощью SendKeys.

Чтобы изменить стиль текстового поля элемента с помощью JavascriptExecutor:

((JavascriptExecutor)driver).executeScript("document.getElementsByName('actionUpdate')[0].style.display='inline'"); 

Чтобы установить какое-то значение для вашего богатого текстового редактора, используйте следующий код:

driver.findElement(By.name("actionUpdate")).sendKeys("Show this message in rich text editor"); 
1

JavaScriptExecutor - лучший способ обработки насыщенных текстовых полей. Просто переключитесь на правильный iframe и установите innerHtml в тело этого iframe.

WebElement text= driver.findElement(By.cssSelector("body")); (JavascriptExecutor)driver.executeScript("arguments[0].innerHTML = 'Set text using innerHTML'", text);

+0

не может найти элемент с селектором css == body –

 Смежные вопросы

  • Нет связанных вопросов^_^