Selenium, TinyMCE e CKEditor

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 !

Glassfish 2.1, Quercus 3.2.1 e WordPress 2.7.1

Talvolta avevo pensato di migrare da PHP a JSP poichè Tomcat supporta nativamente JSP ma Tomcat non è un application server.

Ultimamente sto valutando di usare Glassfish o Jboss come application server per usarli come base per Hudson un continuous integration engine (vedete articolo precedente) invece di usare Winstone integrato al suo interno.

In particolar modo, siccome quelli di Glassifish con Metro affermano l’interoperabilità con .NET per i web service (a partire da Jax-WS più le implementazione degli stessi standard con .NET cosa che Axis2 fa ma più lentamente a mio parere), ho pensato di concentrarmi su Glassfish.

Per caso ho scoperto che esiste Quercus che è una libreria java che è una implementazione java di PHP, in pratica il codice PHP viene trasformato in Java, in pratica potete far girare le vostre applicazioni PHP.

Quercus viene rilasciato con licenza GPL 2 da Caucho Technology una azienda che ha realizzato Resin un java/php application server e Hessian un protocollo binario per web services che avevo già sentito nominare quando lavoravo sui web services.

Quelli di Caucho affermano che le prestazioni si vedono.

Presto detto quello che avete bisogno quindi è GlassFish, Quercus e i driver JDBC che dovete installare nel vostro application server e che Quercus farà uso e la vostra applicazione PHP ovviamente.

Ho scelto WordPress perchè ho trovato un tutorial e di conseguenza ho installato i driver JDBC per Mysql e Mysql stesso.

I tutorial che ho seguito sono:

  • http://blogs.steeplesoft.com/glassfish-php-and-wordpress/ (ma non spiega che bisogna creare un connection pool su glassfish ovvero la connessione tramite i driver JDBC). Dovete prima di tutto estrarre i 3 file (quercus.jar, resin-util.jar, javamail-141.jar) che si trovano nel file war di Quercus nella cartella lib di Glassfish o nella cartella di lib del vostro dominio (domain1 nel mio caso)  a seconda della visibilità che volete dare. Poi in pratica nella cartella del vostro dominio trovate il file config/default-web.xml e dovete inserirci la seguente configurazione:

<servlet>
<servlet-name>Quercus Servlet</servlet-name>
<servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
<init-param>
<param-name>ini-file</param-name>
<param-value>WEB-INF/php.ini</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Quercus Servlet</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>

Dovete poi estrarre WordPress nella cartella docroot del vostro dominio.

Poi oggi rivedendo Quercus ho visto che la procedura è spiegata nel file readme :-) che trovate nel pacchetto e che vi consiglio a questo punto di leggere per prima.

Ora mi concentro anche su Jboss e vedo per qualche applicazione in PostGres.

Nota: vedere anche Php-Java bridge.

Midori e Nginx, alternative browser e server

Stufi di usare sempre gli stessi browser/web server e volete sperimentare qualcosa di nuovo?

Se la risposta è si vi segnalo Midori un leggero browser basato su GTK+ 2.6 e usa Webkit 1.0 passando i test Acid 3. Per installare Midori su ubuntu vedere qui.

Nginx invece è un web server, load balancer (Apache dispone del modulo mod_proxy_balancer) e reverse proxy (per Apache ho trovato questo articolo). E’ considerato il secondo, dopo Apache, tra quelli per Linux( vedere qui e qui). Esso pare che offra prestazioni migliori di Apache servendo più richieste per secondo soprattutto quando si parla di richieste di contenuto statico.

Esso viene dalla Russia e, come dice il sito, nel marzo del 2007 serviva il 20% dei virtualhost russi.

Vi chiederete: chi usa Nginx ?

Nei siti linkati di seguito vedete la risposta del servizio whois e in alcuni le motivazioni:

WordPress (eh già credevate che usassero Apache), YouPorn, FastMail.FM, Kongregate, Hulu, provate infatti a vedere le risposte http da questi siti.

Nginx si può compilare da sorgente, installare dai repository di Ubuntu e  c’è chi l’ha compilato anche per Windows.

C’è poi chi usa Nginx come fronted web server e contemporaneamente Apache come backend

Ulteriori riferimenti: Wikipedia