我想测试一个在Selenium IDE中使用FCKeditor的 Web 应用程序。不幸的是,FCKeditor 使用 iframe,这在 Selenium IDE 中很难测试。基本上,我要做的就是设置FCKeditor编辑区的值,稍后再读取,看看值是否提交正确。
我想这个问题有两个方面:首先,有没有人有针对这个问题的 FCKeditor 特定的解决方案?其次,有没有人知道实现自定义 Javascript 函数的好方法,可以在 Selenium IDE 中的测试中使用?
我想测试一个在Selenium IDE中使用FCKeditor的 Web 应用程序。不幸的是,FCKeditor 使用 iframe,这在 Selenium IDE 中很难测试。基本上,我要做的就是设置FCKeditor编辑区的值,稍后再读取,看看值是否提交正确。
我想这个问题有两个方面:首先,有没有人有针对这个问题的 FCKeditor 特定的解决方案?其次,有没有人知道实现自定义 Javascript 函数的好方法,可以在 Selenium IDE 中的测试中使用?
我想出了一个解决方案。它涉及使用 Selenium IDE 的storeEval
方法、storedVars
变量和匿名函数。它还利用activeElement
了 s 的属性iframe
。
基本上,我所做的是storeEval
使用 javascript 调用该方法,以将某个元素设置为storedVars
我稍后将用作参数的函数。例如FCKeditor
,参数将是:
storedVars["setFCKeditorField"] = function (fieldName, value) {var iframe = this.browserbot.findElement("id="+fieldName+"___Frame"); var outerDocument = iframe.contentDocument; var innerDocument = outerDocument.activeElement.contentDocument; var textField = innerDocument.activeElement; textField.innerHTML = value;}
我故意这样格式化它,因为这是它在 Selenium IDE 中显示的方式,而且我显然不太理想。
然后,稍后,当我真正想设置 FCKeditor 字段的值时,我storeEval
再次使用 javascript 调用该函数作为参数,如下所示:
storedVars["setFCKeditorField"].call(this, "SU_ats_subscription_configuration_model[subscription_reminder_message]", "Subscription Expiring Message.<br/>");
这行得通,但我希望有更好的方法。Selenium RC 会让这一切变得简单吗?