2010-06-08 7 views
0

Je veux tester une application web qui utilise FCKeditor en Selenium IDE. Malheureusement, FCKeditor utilise des iframes, difficiles à tester dans Selenium IDE. Fondamentalement, tout ce que je veux faire est de définir la valeur de la zone d'édition de FCKeditor et de la lire plus tard pour voir si la valeur a été soumise correctement.Quel est un bon moyen d'interagir avec les éléments iframe en utilisant Selenium IDE?

Je suppose que cette question est double: tout d'abord, quelqu'un at-il une solution spécifique à FCKeditor à ce problème? et d'autre part, quelqu'un connait-il un bon moyen d'implémenter des fonctions Javascript personnalisées qui peuvent être utilisées dans vos tests dans Selenium IDE?

Répondre

1

J'ai trouvé une solution. Il implique l'utilisation de la méthode storeEval de Selenium IDE, de la variable storedVars et de fonctions anonymes. Il exploite également la propriété activeElement du iframe s.

Fondamentalement, ce que je fais est d'appeler la méthode storeEval avec javascript pour définir un certain élément de storedVars à la fonction que je vais utiliser plus tard en tant qu'argument. Pour l'exemple FCKeditor l'argument serait:

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;} 

Je l'ai formaté comme ça exprès parce que c'est la façon dont il apparaîtrait dans Selenium IDE, et je il est évidemment moins qu'idéal.

Puis, plus tard, quand je veux vraiment définir la valeur du champ FCKeditor, je l'appelle storeEval à nouveau avec le javascript pour appeler la fonction comme argument, comme suit:

storedVars["setFCKeditorField"].call(this, "SU_ats_subscription_configuration_model[subscription_reminder_message]", "Subscription Expiring Message.<br/>"); 

Cela fonctionne, mais je J'espère qu'il y a un meilleur moyen. Est-ce que Selenium RC rendrait cela facile?

Questions connexes