2014-01-13 2 views
1

В настоящее время я настраиваю тестирование автоматизации в приложении Salesforce, но у меня возникла проблема ввода символов в текстовый редактор с использованием Selenium IDE.Ввод символов в текстовый редактор с использованием Selenium IDE

Как я знаю, редактор текстового редактора завернут в iframe. В HTML, я получил такой код:

<iframe id="j_id0:j_id4:j_id6:j_id115:j_id117:textAreaDelegate_Comments__c_frame"  
frameborder="0" allowtransparency="true" tabindex="0" src="" title="Rich text editor, 
j_id0:j_id4:j_id6:j_id115:j_id117:textAreaDelegate_Comments__c, press ALT 0 for help." 
style="width:100%;height:100%"> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org 
/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html class="CSS1Compat" lang="en" dir="ltr" style="background-color: transparent;"> 
<head> 
<body id="j_id0:j_id4:j_id6:j_id115:j_id117:textAreaDelegate_Comments__c_rta_body" 
class="cke_show_borders" contenteditable="true" spellcheck="false" style="background- 
color: transparent;"> 
</html> 

</iframe> 

Мои текущие шаги:

  1. Команда: selectFrame, Цель: xpath=//*[contains (@id, 'j_id0:j_id4:j_id6:j_id115:j_id117:textAreaDelegate_Comments__c_frame')]
  2. Command: нажмите, Целевая задача: xpath=//*[contains (@id, 'j_id0:j_id4:j_id6:j_id115:j_id117:textAreaDelegate_Comments__c_rta_body')]
  3. Команда: фокус, Цель: xpath=//*[contains (@id, 'j_id0:j_id4:j_id6:j_id115:j_id117:textAreaDelegate_Comments__c_rta_body')]
  4. Команда: SendKeys, Целевая: xpath=//*[contains (@id, 'j_id0:j_id4:j_id6:j_id115:j_id117:textAreaDelegate_Comments__c_rta_body')],Значение: Введенное значение в Rich Text Editor !!!

Когда я запустил этот тестовый пример, и я получил следующую ошибку на шаге 4 - Unexpected Exception: Error: Cannot set the selection end. fileName -> chrome://selenium-ide/content/selenium-core/scripts/atoms.js, lineNumber -> 6118, columnNumber -> 6. Я не знал, что я сделал неправильно, и почему я не мог набирать символы в текстовом редакторе с использованием Selenium IDE.

Спасибо

+0

Я понимаю, но я просто хочу настроить быстрое регрессионное тестирование приложения. И это приложение в SF не очень сложно. Вы поняли, как автоматизировать печатные символы в текстовом редакторе? –

ответ

0

Сегодня утром я столкнулся с тем же вопросом; а не с iframe, но с контентным разрешением <. Мое обходное решение состояло в том, чтобы включить «WebDriver». По-видимому, это «экспериментальная особенность». Там немного из рецензии о нем в

http://blog.reallysimplethoughts.com/2013/02/18/webdriver-playback-in-selenium-ide-is-here/ http://blog.reallysimplethoughts.com/2011/07/08/selenium-ide-and-selenium-2-webdriver/

Если все, что вы хотели быстро регрессивное тестирование, возможно, помогло бы. Но так как этот quesiton составляет два месяца, «быстрый» на самом деле не в карточках. У вас есть мои симпатии.

Ваша ситуация звучит похоже, по крайней мере внешне, в сообщение об ошибке в

http://code.google.com/p/selenium/issues/detail?id=6981

, который является своего рода плохие новости.

Для записи, как я добрался до своего обходного пути: я уставился на сценарий в среде IDE и не мог понять, что может быть не так, и я экспортировал тест на скрипт Python с помощью WebDriver, надеясь, что я 'd видеть ошибку. Я побежал, и это просто сработало! Таким образом, я выкопал еще немного, нашел WebDriver как вариант в самой IDE, и вот вы идете. Я не могу сказать, что происходит на самом деле идет не так, но я пошел по ссылке вниз в atom.js, где я провел больше времени, чем должен был восхищаться кодом.

0

Здесь css=iframe[title*='textAreaDelegate_Comments'] body - Этот селектор CSS может использоваться для редактирования.

0

Если вы можете выбрать элемент contentEditable, вы можете установить его внутренний HTML.

В Selenium IDE у меня есть вспомогательный тест в верхней части моих тестовых наборов, который содержит вспомогательные команды, чтобы сделать такие вещи более удобными.

Команда: storeEval, Цель: Selenium.prototype.doInnerHTML=function(locator,text){var element=this.browserbot.findElement(locator);if(element===null)return null;element.innerHTML=text}

Каждый раз, когда вы создаете пользовательскую команду в Selenium IDE, вам также необходимо загрузить их, так что последний шаг моего хелперов теста является:

Команда: storeEval, Цель:editor.treeView.reloadSeleniumCommands()

С помощью этой команды на заказ innerHTML, я могу ввести содержание в contentEditable области с помощью:

Команда: innerHTML, Цели: идентификатора = сообщение, Значения: Здравствуйте!

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