2012-05-25 11 views
17

Estoy usando Selenium2/WebDriver para probar mis aplicaciones web. Todas las pruebas están escritas en Java y se ejecutan con Maven.Cómo capturar todas las solicitudes realizadas por página en webdriver? ¿Hay alguna alternativa a Browsermob?

Al abrir una página con webdriver me gustaría capturar todas las solicitudes hechas por página (imágenes, archivos js y css, etc.). Yo uso estos datos, principalmente por dos razones

  • cheques de 404 (y otros errores) en llamadas
  • comprobación de si el código de análisis está trabajando (controla si está enviando las solicitudes apropiadas)

Dependiendo de la proyecto Uso Firebug con Netexport o el proxy Browsermob. En ambos casos, puedo obtener fácilmente un archivo HAR (Html ​​ARchive), analizarlo y extraer los datos que quiero.

Aquí está el problema: No estoy contento con ninguna de estas soluciones. Tengo problemas especialmente para obtener el archivo HAR cuando una página contiene video que se está cargando demasiado tiempo. Estoy buscando algo más estable.

Por lo tanto, las preguntas son:

¿Hay alguna alternativa a Browsermob? Conozco FiddlerCore, pero es una biblioteca .NET y mis pruebas están escritas en Java. También escuché acerca de Ajax DynaTrace y sé que hay alguna forma de integrarlo con Selenium, pero la documentación que encontré fue para Selenium-RC y no para WebDriver.

¿Hay alguna manera de integrar DynaTrace con WebDriver o usar FiddlerCore con Java?

¿Hay alguna otra forma de lograr los objetivos que mencioné? Estoy buscando un proxy que pueda controlar fácilmente desde mi código. Exportar datos a HAR sería una gran ventaja.

+0

Puede utilizar crear un servicio web C# y llamarlo desde java – Indraneel

Respuesta

5

hay una alternativa con Firefox Ver 42+, hay complemento de Firefox llamado HarExport

File harExportApi = new File(System.getProperty("user.dir") 
        + "/src/main/resources/firebug/harexporttrigger-0.5.0-beta.7.xpi"); 

netExportProfile.addExtension(harExportApi); 
netExportProfile.setPreference("extensions.netmonitor.har.enableAutomation", true); 
    netExportProfile.setPreference("extensions.netmonitor.har.contentAPIToken", "test"); 
    netExportProfile.setPreference("extensions.netmonitor.har.autoConnect", true); 

cap.setCapability(FirefoxDriver.PROFILE, netExportProfile); 

y ejecutándose tras scr IPT nos dará todas las respuestas de solicitud de

String getHarLogScript = "var options = {\n" + 
       " token: \"test\",\n" + 
       " getData: true,\n" + 
       " title: \"my custom title\",\n" + 
       " jsonp: false,\n" + 
       " };\n" + 
       "\n" + 
       " HAR.triggerExport(options).then(result => {\n" + 
       " var har = JSON.parse(result.data);\n" + 
       "\n" + 
       " // Use performance.timing to provide onContentLoad\n" + 
       " + 
       "  + 
       " var t = performance.timing;\n" + 
       " var pageTimings = har.log.pages[0].pageTimings;\n" + 
       " pageTimings.onContentLoad = t.domContentLoadedEventStart - t.navigationStart;\n" + 
       " pageTimings.onLoad = t.loadEventStart - t.navigationStart;\n" + 
       "\n" + 
       " window.HarEntries=har.log.entries\n" + 
       "\n" + 
       " console.log(\"HAR log (\" + result.data.length + \") \", har.log);\n" + 
       " }, err => {\n" + 
       " console.error(err);\n" + 
       " });" 

LOG.info("Loading HAR log entries object into browser HarEntries object"); 
SeleniumUtils.executeScript(driver, getHarLogScript); 

harEntries = ((List<Object>) SeleniumUtils.executeScript(driver, "return window.HarEntries")); 
+0

Probé el código anterior dice ~ org.openqa.selenium.JaScriptException: ReferenceError: HAR no está definido ~ ¿Cómo incluyo esta dependencia? Selenium3.0.0, FF 51, Mac OS. – user2649233

Cuestiones relacionadas