Ultimamente, come avete certamente capito, sto lavorando con Selenium per testare pagine web.
E’ molto probabile che nella vostra applicazione web usate TinyMCE o CKEditor. Non mi pongo su quale sia meglio l’importante è che riesco a scrivere nelle caselle di testo con entrambi.
Avendo TinyMCE (3.0.7 e 3.2.7 (wordpresss.com)) sono riuscito a scrivere con:
type | dom=document.getElementById("TEXTAREAID_ifr").contentWindow.document.body | Hello world |
dove TEXTAREAID è l’ID della text area su cui TinyMCE si basa.
Con CKEditor (3.2.1 del 09 Apr 2010) sono riuscito a scrivere con:
runScript | CKEDITOR.instances[‘TEXTAREAID’].setData(‘Hello world’); |
dove TEXTAREAID è l’ID o il nome della text area su cui CKEditor si basa.
Con FCKEditor 2.5.1 incorportato in Mediawiki (vedi sandbox con Rich Editor abilitato), sono riuscito a scrivere con:
runScript | FCKeditorAPI.GetInstance(‘TEXTAREAID’).SetHTML( ‘Hello World’ ); |
Per farla più semplice ho scritto una funzione nel file user-extension.js per TinyMCE:
Selenium.prototype.doTypeInTinymce= function(textareaid, testo) { var oggettoid= textareaid+"_ifr"; var locator = 'dom=document.getElementById(\"'+oggettoid+'\").contentWindow.document.body'; selenium.doType(locator,testo); };
quindi potete scrivere direttamente:
typeInTinymce | content | Hello world |
dove content è l’id della text area nel mio caso (blog di WordPress).
Potete anche aggiungere html, del tipo:
typeInTinymce | content | <b>Hello world</b> |
Per l’FCKEditor potete scrivere il seguente comando:
Selenium.prototype.doTypeInFckeditor= function(textareaid, testo) { var script = "FCKeditorAPI.GetInstance(\'"+textareaid+"\').SetHTML(\'"+testo+"\')"; selenium.doRunScript(script); };
quindi potete scrivere direttamente:
typeInFckeditor | wpTextbox1 | Hello world |
dove wpTextbox1 è l’id della text area nel caso di Mediawiki con FCKEditor.
A presto !