Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
Introducción al script de monitorización del browser
El browser con secuencias de comandos emula una experiencia personalizada del usuario mediante un browser con secuencias de comandos que navega por su sitio web, realiza acciones específicas y garantiza que haya elementos específicos presentes. Para crear un browser con secuencias de comandos, vaya a one.newrelic.com > Synthetic monitoring > Create a monitor y luego seleccione el mosaico User flow / functionality.
Scripted monitors are driven by Selenium WebDriver. Each time your script runs, New Relic creates a fully virtualized Selenium-driven Google Chrome browser that navigates your website and follows each script step. Synthetic monitoring includes an IDE-style script editor that suggests functions, locators, and other elements to simplify scripting.
Para ver cómo usar Selenium IDE para registrar su flujo de trabajo y exportarlos en el formato requerido por New Relic, mire este breve video de YouTube (3:49 minutos).
Visita una URL
Todos los scripts comienzan especificando a qué URL debe navegar el monitor. Para especificar una URL, llame a $browser.get("url"):
$browser.get("https://mywebsite.com");
Secuencia de acciones
Debido a que WebDriverJS es asincrónico, las acciones de script a veces pueden ejecutarse fuera de orden. Para forzar que las acciones del script se ejecuten en orden, incluya cada acción en una llamada then(function(){}) :
Una vez que haya especificado una URL para monitor, generalmente querrá ubicar un elemento particular en la página. Ubicar un elemento verifica su presencia en la página y también le permite interactuar con el elemento de página.
Puede ubicar elementos por su class, id, link text, name o incluso XPath. Para encontrar estos atributos, utilice las herramientas de desarrollo de su browser o vea el código fuente de su sitio web. Para obtener una lista de todas las funciones del localizador, consulte Localizadores: Buscar elemento de página.
Localice un elemento por su HTML class (por ejemplo, class="button"). Generalmente se especifica una clase para el estilo CSS. Al ubicar un elemento por clase, el monitor seleccionará el primer elemento de la página que tenga esa clase:
Localice un elemento por su exact HTML id (por ejemplo, id="edit-submit"). Esta es una forma sencilla de ubicar el elemento de página, pero tenga cuidado de especificar un id que probablemente no cambie.
Localizar un elemento por el texto de vínculo mostrado; por ejemplo, <a href="http://example.com>your link text here</a>. Puedes localizar por el exact texto de vínculo ($driver.By.linkText) o por coincidencia parcial ($driver.By.partialLinkText):
Para ver un ejemplo de cómo ubicar un enlace por su texto de enlace, consulte Navegar a un enlace.
Localice un elemento por su exact HTML name (por ejemplo, name="search-query-field"). Esto se usa más comúnmente con campos de entrada como un cuadro de búsqueda:
Los selectores XPath pueden fallar cuando cambia la estructura de su sitio web. Para obtener sugerencias sobre cómo crear buenos selectores XPath, consulte Optimización de selectores XPath. Para ver un ejemplo de cómo ubicar un elemento por su xpath, consulte Buscar en un sitio web.
Sugerencia
Para encontrar rápidamente el XPath de un elemento en particular, utilice las herramientas de desarrollo de su browser. Por ejemplo, en Chrome:
En Chrome, navegue hasta el sitio web de destino.
Haga clic derecho en el elemento de destino y luego seleccione
Inspect element
.
Desde el panel Herramientas de desarrolladores que se abre automáticamente, busque el elemento de destino resaltado.
Haga clic derecho en el elemento de destino y luego seleccione
Copy XPath
.
Interactuar con elementos
Debido a que un monitor con secuencias de comandos controla un browser Google Chrome real con tecnología Selenium, los monitores con secuencias de comandos pueden interactuar con el elemento de página de la misma manera que lo haría un usuario. Por ejemplo, el monitor puede hacer clic en un enlace, ingresar texto en un cuadro de búsqueda, etc. Para obtener una lista de acciones disponibles, consulte ActionSequence: vincular varias acciones.
Para ver un ejemplo de cómo ingresar texto en un campo, consulte Buscar en un sitio web.
Sugerencia
Puede agregar teclas modificadoras (como ALT y SHIFT) con las funciones keyDown() y keyUp() .
Esperas y tiempos de espera
Los elementos de página grandes, como imágenes o contenido dinámico complejo, pueden tardar mucho en cargarse. Esto puede hacer que su script falle cuando el monitor intenta interactuar o ubicar un elemento que aún no se ha cargado.
Después de un tiempo de ejecución máximo de tres minutos, New Relic detiene manualmente el script.
Indique al monitor que espere a que el título de la página coincida con un valor determinado. Esto asegura que el browser haya recibido al menos algunos datos de la página de destino. Para esperar el título de la página, especifique un título esperado y un valor de tiempo de espera en milisegundos:
//Call the wait function
$browser.wait(function() {
//Tell the monitor to get the page title, then run a function on that title.
return $browser.getTitle().then(function(title) {
//Specify the expected page title.
return title === "Your Page Title Here";
});
//If the condition is not satisfied within a timeout of 1000 milliseconds (1 second), proceed anyway.
Indique al monitor que espere hasta que esté presente un elemento de página. Esto es útil cuando un elemento del que depende su script tarda mucho en cargarse, o simplemente para garantizar que un elemento de página esté presente antes de que su script haga clic en él.
Utilice cualquiera de las funciones de localización con la función de espera a continuación. Utilice la función que desee en lugar de la función $driver.By.linkText que se utiliza a continuación:
//Tell the monitor to wait up to 7,500 milliseconds (7.5 seconds) for a link whose text is `Your Link Text Here`.
$browser.waitForAndFindElement($driver.By.linkText("Your Link Text Here"), 7500);
waitForAndFindElement() no podrá encontrar un elemento si está completamente detrás de otro elemento o si tiene un tamaño de 0. Aún así encontrará elementos con opacidad 0.
Log resultados del script
También puede log manualmente los resultados del monitor en el logdel script. Utilice el registro para solucionar problemas de una script: para descubrir qué paso de su script está fallando, incluya una función log junto con cada paso clave de su script.
Importante
La longitud máxima log es 50.000 bytes. Los registros de script de más de 50.000 bytes se truncan.
Para log una línea de texto estático, llame a console.log():
Sintético bloquea la ejecución de scripts de servicios de análisis populares de forma predeterminada. Puede permitir que se ejecute un script para un servicio específico. Esto permite que el script del servicio se ejecute y recopile datos como lo haría para un usuario real.
Puede personalizar el agente de usuario del browser con script para garantizar que las correcciones específicas browseren su aplicación funcionen correctamente o para evitar un mecanismo de seguridad para filtrar un sitio interno.
Esto solo falsifica el encabezado HTTP del agente de usuario para la solicitud al servidor. No cambia el valor de navigator.userAgent.
Importar módulos opcionales
También puede importar muchos módulos populares de Node.js para mejorar su conjunto de pruebas, automatizar la inserción de datos de prueba y simplificar funciones complejas. Para obtener más información, consulte Importación de módulos de Node.js.