miércoles, 31 de agosto de 2016

Blog interesante sobre java

http://www.arquitecturajava.com/

Tabla de locales en java7

Esta tabla muestra el language, formate numérico, fecha corta y fecha larga por cada Locale de java.util.Locale.

Se ha generado con este código:

@Test
public void tableWithAllLocalesInfo() {
List list = Arrays.asList(DateFormat.getAvailableLocales());
Date now = new Date();
for (Locale locale : list) {
System.out.println("

Language - " + locale.getLanguage() + "
- Number format - "
+ NumberFormat.getInstance(locale).format(12345.6789) + "
- dateShort - "
+ DateFormat.getDateInstance(DateFormat.SHORT, locale).format(now) + "
- dateLong - "
+ DateFormat.getDateInstance(DateFormat.LONG, locale).format(now) + "
");
}
}


Language - - Number format - 12,345.679- dateShort - 8/31/16- dateLong - August 31, 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 آب, 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 آب, 2016
Language - hr- Number format - 12.345,679- dateShort - 31.08.16.- dateLong - 2016. kolovoza 31
Language - fr- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 août 2016
Language - es- Number format - 12,345.679- dateShort - 08/31/16- dateLong - 31 de agosto de 2016
Language - mt- Number format - 12,345.679- dateShort - 31/08/2016- dateLong - 31 ta’ Awwissu 2016
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - bg- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31 Август 2016
Language - zh- Number format - 12,345.679- dateShort - 2016/8/31- dateLong - 2016年8月31日
Language - it- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 agosto 2016
Language - ko- Number format - 12,345.679- dateShort - 16. 8. 31- dateLong - 2016년 8월 31일 (수)
Language - uk- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31 серпня 2016
Language - lv- Number format - 12 345,679- dateShort - 16.31.8- dateLong - trešdiena, 2016, 31 augusts
Language - da- Number format - 12.345,679- dateShort - 31-08-16- dateLong - 31. august 2016
Language - es- Number format - 12,345.679- dateShort - 08-31-16- dateLong - 31 de agosto de 2016
Language - vi- Number format - 12.345,679- dateShort - 31/08/2016- dateLong - Ngày 31 tháng 8 năm 2016
Language - en- Number format - 12,345.679- dateShort - 8/31/16- dateLong - August 31, 2016
Language - sr- Number format - 12.345,679- dateShort - 31.8.16.- dateLong - 31.08.2016.
Language - sv- Number format - 12 345,679- dateShort - 2016-08-31- dateLong - den 31 augusti 2016
Language - es- Number format - 12.345,679- dateShort - 31-08-16- dateLong - 31 de agosto de 2016
Language - en- Number format - 12,345.679- dateShort - 31/8/16- dateLong - 31 August, 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - pt- Number format - 12.345,679- dateShort - 31-08-2016- dateLong - 31 de Agosto de 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - sk- Number format - 12 345,679- dateShort - 31.8.2016- dateLong - Streda, 2016, augusta 31
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - hi- Number format - १२,३४५.६७९- dateShort - ३१/८/१६- dateLong - ३१ अगस्त, २०१६
Language - ga- Number format - 12,345.679- dateShort - 16/08/31- dateLong - 2016 Lúnasa 31
Language - en- Number format - 12,345.679- dateShort - 31/08/2016- dateLong - 31 August 2016
Language - fi- Number format - 12 345,679- dateShort - 31.8.2016- dateLong - 31. elokuuta 2016
Language - et- Number format - 12 345,679- dateShort - 31.08.16- dateLong - kolmapäev, 31. august 2016. a
Language - sv- Number format - 12 345,679- dateShort - 2016-08-31- dateLong - den 31 augusti 2016
Language - cs- Number format - 12 345,679- dateShort - 31.8.16- dateLong - 31. srpna 2016
Language - sr- Number format - 12,345.679- dateShort - 31.8.16.- dateLong - 31. avgust 2016.
Language - el- Number format - 12.345,679- dateShort - 31/8/2016- dateLong - 31 Αυγούστου 2016
Language - uk- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31 серпня 2016
Language - hu- Number format - 12 345,679- dateShort - 2016.08.31.- dateLong - 2016. augusztus 31.
Language - fr- Number format - 12'345.679- dateShort - 31.08.16- dateLong - 31. août 2016
Language - in- Number format - 12.345,679- dateShort - 16/08/31- dateLong - 2016 Agustus 31
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - ja- Number format - 12,345.679- dateShort - H28.08.31- dateLong - H28.08.31
Language - es- Number format - 12,345.679- dateShort - 08-31-16- dateLong - 31 de agosto de 2016
Language - pt- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de Agosto de 2016
Language - be- Number format - 12 345,679- dateShort - 31.8.16- dateLong - серада, 31, жніўня 2016
Language - is- Number format - 12.345,679- dateShort - 31.8.2016- dateLong - 31. ágúst 2016
Language - cs- Number format - 12 345,68- dateShort - 31.8.16- dateLong - 31. srpna 2016
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - pl- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31 sierpnia 2016
Language - tr- Number format - 12.345,679- dateShort - 31.08.2016- dateLong - 31 Ağustos 2016 Çarşamba
Language - ca- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 / d’agost / 2016
Language - sr- Number format - 12.345,679- dateShort - 31.8.16.- dateLong - 31.08.2016.
Language - ms- Number format - 12,345.679- dateShort - 31/08/2016- dateLong - 31 Ogos 2016
Language - hr- Number format - 12.345,679- dateShort - 2016.08.31- dateLong - 2016. kolovoza 31
Language - lt- Number format - 12 345,679- dateShort - 16.8.31- dateLong - Trečiadienis, 2016, rugpjūtis 31
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - bg- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31 Август 2016
Language - sq- Number format - 12.345,679- dateShort - 16-08-31- dateLong - 2016-08-31
Language - fr- Number format - 12 345,679- dateShort - 31/08/16- dateLong - 31 août 2016
Language - ja- Number format - 12,345.679- dateShort - 16/08/31- dateLong - 2016/08/31
Language - sr- Number format - 12.345,679- dateShort - 16-08-31- dateLong - 31. август 2016.
Language - is- Number format - 12.345,679- dateShort - 31.8.2016- dateLong - 31. ágúst 2016
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - de- Number format - 12.345,679- dateShort - 31.08.16- dateLong - 31. August 2016
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - es- Number format - 12,345.679- dateShort - 8/31/16- dateLong - 31 de agosto de 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - en- Number format - 12,345.679- dateShort - 8/31/16- dateLong - August 31, 2016
Language - ro- Number format - 12.345,679- dateShort - 31.08.2016- dateLong - 31 august 2016
Language - en- Number format - 12,345.679- dateShort - 8/31/16- dateLong - August 31, 2016
Language - ca- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 / d’agost / 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - sr- Number format - 12,345.679- dateShort - 31.8.16.- dateLong - 31.08.2016.
Language - es- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - sl- Number format - 12.345,679- dateShort - 31.8.2016- dateLong - 31. avgust 2016
Language - ko- Number format - 12,345.679- dateShort - 16. 8. 31- dateLong - 2016년 8월 31일 (수)
Language - el- Number format - 12.345,679- dateShort - 31/08/2016- dateLong - 31 Αύγουστος 2016
Language - es- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - ru- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31 августа 2016 г.
Language - es- Number format - 12,345.679- dateShort - 08-31-16- dateLong - 31 de agosto de 2016
Language - zh- Number format - 12,345.679- dateShort - 16年8月31日- dateLong - 2016年08月31日 星期三
Language - no- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31. august 2016
Language - hu- Number format - 12 345,679- dateShort - 2016.08.31.- dateLong - 2016. augusztus 31.
Language - th- Number format - 12,345.679- dateShort - 31/8/2559- dateLong - 31 สิงหาคม 2559
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - es- Number format - 12.345,679- dateShort - 31-08-16- dateLong - 31 de agosto de 2016
Language - fi- Number format - 12 345,679- dateShort - 31.8.2016- dateLong - 31. elokuuta 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - ga- Number format - 12,345.679- dateShort - 31/08/2016- dateLong - 31 Lúnasa 2016
Language - mk- Number format - 12.345,679- dateShort - 31.8.16- dateLong - 31, август 2016
Language - tr- Number format - 12.345,679- dateShort - 31.08.2016- dateLong - 31 Ağustos 2016 Çarşamba
Language - et- Number format - 12 345,679- dateShort - 31.08.16- dateLong - kolmapäev, 31. august 2016. a
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - sr- Number format - 12,345.679- dateShort - 31.8.16.- dateLong - 31. avgust 2016.
Language - pt- Number format - 12.345,679- dateShort - 31-08-2016- dateLong - 31 de Agosto de 2016
Language - fr- Number format - 12 345,679- dateShort - 31/08/16- dateLong - 31 août 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - th- Number format - 12,345.679- dateShort - 31/8/2016- dateLong - 31 สิงหาคม 2016
Language - sq- Number format - 12.345,679- dateShort - 16-08-31- dateLong - 2016-08-31
Language - es- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - ru- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31 августа 2016 г.
Language - en- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 August 2016
Language - sr- Number format - 12.345,679- dateShort - 31.8.16.- dateLong - 31.08.2016.
Language - de- Number format - 12'345.679- dateShort - 31.08.16- dateLong - 31. August 2016
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - ms- Number format - 12,345.679- dateShort - 16/08/31- dateLong - 2016 Ogos 31
Language - el- Number format - 12.345,679- dateShort - 31/8/2016- dateLong - 31 Αυγούστου 2016
Language - iw- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 אוגוסט 2016
Language - en- Number format - 12,345.679- dateShort - 2016/08/31- dateLong - 31 August 2016
Language - th- Number format - ๑๒,๓๔๕.๖๗๙- dateShort - ๓๑/๘/๒๕๕๙- dateLong - ๓๑ สิงหาคม ๒๕๕๙
Language - hi- Number format - 12,345.679- dateShort - 8/31/16- dateLong - August 31, 2016
Language - fr- Number format - 12 345,679- dateShort - 31/08/16- dateLong - 31 août 2016
Language - de- Number format - 12.345,679- dateShort - 31.08.16- dateLong - 31. August 2016
Language - nl- Number format - 12.345,679- dateShort - 31-8-16- dateLong - 31 augustus 2016
Language - no- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31. august 2016
Language - en- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 August 2016
Language - vi- Number format - 12.345,679- dateShort - 31/08/2016- dateLong - Ngày 31 tháng 8 năm 2016
Language - nl- Number format - 12.345,679- dateShort - 31-8-16- dateLong - 31 augustus 2016
Language - fr- Number format - 12 345,679- dateShort - 16-08-31- dateLong - 31 août 2016
Language - lv- Number format - 12 345,679- dateShort - 16.31.8- dateLong - trešdiena, 2016, 31 augusts
Language - de- Number format - 12.345,679- dateShort - 31.08.16- dateLong - 31. August 2016
Language - es- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - sr- Number format - 12.345,679- dateShort - 31.8.16.- dateLong - 31.08.2016.
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - mt- Number format - 12,345.679- dateShort - 31/08/2016- dateLong - 31 ta’ Awwissu 2016
Language - it- Number format - 12'345.679- dateShort - 31.08.16- dateLong - 31. agosto 2016
Language - da- Number format - 12.345,679- dateShort - 31-08-16- dateLong - 31. august 2016
Language - de- Number format - 12.345,679- dateShort - 31.08.16- dateLong - 31. August 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 أغسطس, 2016
Language - sk- Number format - 12 345,679- dateShort - 31.8.2016- dateLong - Streda, 2016, augusta 31
Language - lt- Number format - 12 345,68- dateShort - 16.8.31- dateLong - Trečiadienis, 2016, rugpjūtis 31
Language - it- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 agosto 2016
Language - en- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 August 2016
Language - zh- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 八月 2016
Language - ro- Number format - 12.345,679- dateShort - 31.08.2016- dateLong - 31 august 2016
Language - en- Number format - 12,345.679- dateShort - 31/08/16- dateLong - August 31, 2016
Language - nl- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 augustus 2016
Language - no- Number format - 12 345,679- dateShort - 31.08.16- dateLong - 31. august 2016
Language - pl- Number format - 12 345,679- dateShort - 16-08-31- dateLong - 31 sierpnia 2016
Language - zh- Number format - 12,345.679- dateShort - 16-8-31- dateLong - 2016年8月31日
Language - ja- Number format - 12,345.679- dateShort - 16/08/31- dateLong - 2016/08/31
Language - de- Number format - 12.345,679- dateShort - 31.08.16- dateLong - 31. August 2016
Language - sr- Number format - 12,345.679- dateShort - 31.8.16.- dateLong - 31. avgust 2016.
Language - iw- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 אוגוסט 2016
Language - en- Number format - 12,345.679- dateShort - 31/8/16- dateLong - 31 August, 2016
Language - ar- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 آب, 2016
Language - es- Number format - 12,345.679- dateShort - 08-31-16- dateLong - 31 de agosto de 2016
Language - zh- Number format - 12,345.679- dateShort - 16-8-31- dateLong - 2016年8月31日
Language - mk- Number format - 12.345,679- dateShort - 31.8.16- dateLong - 31, август 2016
Language - be- Number format - 12 345,679- dateShort - 31.8.16- dateLong - серада, 31, жніўня 2016
Language - sl- Number format - 12.345,679- dateShort - 31.8.2016- dateLong - 31. avgust 2016
Language - es- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 de agosto de 2016
Language - in- Number format - 12.345,679- dateShort - 31/08/16- dateLong - 31 Agustus 2016
Language - en- Number format - 12,345.679- dateShort - 31/08/16- dateLong - 31 August 2016

lunes, 29 de agosto de 2016

Cambio de versiones del proyecto con maven versions

Para actualizar la version del proyecto utilizaremos el plugin de maven "versions" http://www.mojohaus.org/versions-maven-plugin/set-mojo.html

Pasos:
  •  Colocarse en la carpeta raiz del proyecto.
  • Ejecutar el comando siguiente indicando la nueva version, por ejemplo podría ser "1.0.0-SNAPSHOT" para la rama de desarrollo o "1.0.0" para cerrar una versión.
mvn versions:set -DnewVersion=[NUEVA VERSION]
  •  El resultado de este comando devuelve algo parecido a la trazada de debajo. Lo importante es revisar ahí que aparezca el texto BUILD SUCCESS:
[INFO] Reactor Summary:
[INFO]
...
...
....
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS


lunes, 22 de agosto de 2016

Selenium Select problema en el click sobre un option

Entorno en el que se produce error:

Firefox 46.0.1
Servidor Jenkins 2.17.
Plugin de Jenkins Selenium Grid 2.53.1
Servidor para nodo selenium-server-standalone-3.0.0-beta2

Problema: Al utilizar la clase org.openqa.selenium.support.ui.Select para obtener un select y utilizar alguno de sus métodos selectBy{*} para seleccionar un option no funciona al utilizar RemoteWebDriver. Tampoco funciona seleccionar el WebElement del option y realizar el método click.

Solución: No usar la clase Select, seleccionar el select por id con un findByElement, hacer click sobre él y despues realizar el método sendKeys para escribir el texto de la opción deseada.



Caso extraño: Si nuestros options no tienen texto, la única solución que he encontrado es utilizando las teclas de flechas mandandolas con sendKeys y al finalizar mandando la tecla enter.
En mi caso como me da igual que option seleccionar he utilizado ARROW_DOWN  un par de veces.
Las teclas se pueden sacar de la clase de selenium Keys:
https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/Keys.html

martes, 16 de agosto de 2016

Usar selenium con RemoteWebDriver y Jenkins

Usar selenium en remoto

  • Utilizaremos un selenium-grid instalado en jenkins https://wiki.jenkins-ci.org/display/JENKINS/Selenium+Plugin. A este grid se conectarán nodos, que son los servidores donde se encuentran realmente los navegadores web. La forma de conectar un nodo es con el siguiente comando:
     
    java -jar selenium-server-standalone-3.0.0-beta2.jar -role node  -hub http://[jenkins.instalado]:4444/wd/hub
    

    Al ejecutar este comando se verá en la consola de selenium de jenkins el nodo conectado y los navegadores disponibles "Registered Remote Controls".
    Una vez configurado el servidor selenium y los nodos podemos utilizarlo cambiando el Webdriver que usamos en los tests por lo siguiente:
         final WebDriver driver = new RemoteWebDriver(new URL("http://[jenkins.instalado]:4444/wd/hub"), DesiredCapabilities.firefox());

Los problemas que he tenido han sido de acceso a los puertos. Las máquinas donde estén instalados los nodos tienen que tener los puertos 4444 y 5555 abiertos. En mi caso particular ambos puertos estaban capados por el firewall de windows.