使用Selenium IDE在富文本编辑器中键入字符

时间:2014-01-13 22:48:09

标签: selenium xpath salesforce selenium-ide qa

我目前正在Salesforce应用程序中设置自动化测试,但我遇到了使用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. 命令:点击,目标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')], :富文本编辑器中的输入值!!!
  5. 当我运行此测试用例时,我在步骤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在富文本编辑器中键入字符。

    由于

3 个答案:

答案 0 :(得分:0)

今天早上我遇到了同样的问题;不是使用iframe而是使用contenteditable&lt; span&gt;。我的解决方法是打开“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/

如果你想要的只是快速回归测试,也许这会有所帮助。但由于这个问题已经有两个月了,所以“快速”不再适用了。你有我的同情心。

您的情况听起来与

中的错误报告类似,至少表面上看似乎如此

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

这是一个坏消息。

为了记录,我得到了解决方法:我盯着IDE中的脚本,无法弄清楚可能出现的问题,然后我使用WebDriver将测试导出到Python脚本,希望我' d看到错误。我跑了它就行了!所以我挖了一下,发现WebDriver是IDE本身的一个选项,你就去了。我不能说实际出错了什么,但我跟着链接进入了atom.js,在那里我花了更多的时间而不是我应该欣赏代码。

答案 1 :(得分:0)

此处css=iframe[title*='textAreaDelegate_Comments'] body - 此CSS选择器可用于编辑。

答案 2 :(得分: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,目标: id =消息,值:您好!