Libellés

Affichage des articles dont le libellé est har. Afficher tous les articles
Affichage des articles dont le libellé est har. Afficher tous les articles

lundi 17 janvier 2011

Selenium 2 Webdriver rajouter des plugins à firefox

Selenium est un projet open source qui permet de contrôler des navigateurs (Firefox, IE, Chrome, ...).
Par exemple on peut lui dire :
  - tu ouvres l'url : http://google.fr
  - tu saisies le texte : 'bla bla' dans le champs de recherche
  - tu cliques sur le boutons 'Rechercher'
  - tu attends le chargement de la page
  - puis tu vérifies la présence d'un texte.

Actuellement Selenium et Webdriver de google sont en train de fusionner pour donner naissance à Selenium2. Actuellement nous sommes à la première version beta.

Selenium2 propose pas mal d'améliorations par rapport à Selenium 1. De tête je peux citer :
   - le support des navigateurs Iphone, Android
   - un meilleur support des navigateurs Chrome, Firefox et IE
   - la possibilité de simuler un navigateur avec HTML Unit (toujours plus rapide que de lancer un Firefox)
   - et également la possibilité de rajouter des plugins et de configurer facilement le navigateur ( about: config sous Firefox)

Voici un exemple issue d'un projet open source qui rajoute à firefox le plugin firebug et qui désactive le cache de firefox.


private static FirefoxProfile tweakProfile(FirefoxProfile profile) 
{
  try {
/* Load Firebug plugin */
  profile.addExtension(FirefoxProfile.class, "/firebug-1.5.4.xpi");
  /* Disable the cache of Firefox */
  profile.setPreference("browser.cache.disk.enable", false);
  profile.setPreference("browser.cache.memory.enable", false);
  profile.setPreference("browser.cache.offline.enable", false);
  profile.setPreference("network.http.use-cache", false);
} catch (IOException e) {
throw new RuntimeException("Could not load required extensions,
something is wrong", e);
}
return profile;
}
Voir les sources : HTML to HAR
La commande ci dessous permet de rajouter des plugins à Firefox :
profile.addExtension(FirefoxProfile.class, "/firebug-1.5.4.xpi"); 


Et cette commande là permet de modifier les préférences de firefox (équivalent à un about:config ) : 
profile.setPreference("browser.cache.disk.enable", false);

Parser JSON en JAVA et en toute simplicité

Bonjour, bonsoir

Pendant quelques temps j'ai cherché à générer et à parser des fichiers JSON.

J'ai utilisé http://www.json.org/java/ qui est très simple d'utilisation mais pas très pratique.
Puis un jour je suis tombé sur un parser HAR (qui est au format JSON) qui était codé tout simplement.
Il utilisait la librairie Jackson JSON Parser : http://wiki.fasterxml.com/JacksonInFiveMinutes

Avec Jackon, il suffit de créer un objet java (POJO) et lui dire de remplir cet objet à l'aide d'un fichier JSON (ou d'un String)

Je vous laisse découvrir la complexité de la chose :)




import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.codehaus.jackson.map.ObjectMapper;
public class HarParser {
    private static ObjectMapper mapper = new ObjectMapper();
    /**
* Parse a JSON HAR
*
* @param har a JSON String
* @return the HarLog representation
* @throws IOException if file not found
*/
    public static Har parseHAR(String har) throws IOException {
        Har value = mapper.readValue(har, Har.class);
        return value;
    }
}

https://github.com/Filirom1/browsermob-proxy/blob/master/src/main/java/com/browsermob/core/har/HarParser.java


Voici le fichier JSON à parser :
https://github.com/Filirom1/browsermob-proxy/blob/master/src/test/resources/ysearch.har


Et voici le test unitaire associé :


    @Test
    public void browser() {
        String fileName = this.getClass().getResource("/ysearch.har").getFile();
        try {
            Har har = HarParser.parseHarFromFile(new File(fileName));
            HarLog ysearch = har.getLog();
            String harBrowser = ysearch.getBrowser().getName();
            assertEquals("browser name", "Firefox", harBrowser);
        } catch (Exception ex) {
            fail("Exception occurs "+ex.getMessage());
        }
    }