Funciones de la biblioteca disponibles para los scripts de valores controlados de Python que usan Selenium
Esta sección enumera las funciones de biblioteca Selenium disponibles para los scripts valores controlados de Python.
Temas
Clases y funciones de biblioteca de Python y Selenium que se aplican a todos los canaries
Las siguientes funciones de biblioteca de CloudWatch Synthetics para Python son útiles para todos los canaries.
Clase SyntheticsConfiguration
Se puede utilizar la clase SyntheticsConfiguration para configurar el comportamiento de las funciones de biblioteca de Synthetics. Por ejemplo, se puede utilizar esta clase para configurar la función executeStep()
para no hacer capturas de pantalla.
Se pueden establecer las configuraciones de CloudWatch Synthetics a nivel global.
Definiciones de la función
set_config(options)
from aws_synthetics.common import synthetics_configuration
es un objeto, que es un conjunto de opciones configurables para el valor controlado. En las siguientes secciones se explican los posibles campos en options
.options
screenshot_on_step_start
(booleano): si se debe tomar una captura de pantalla antes de comenzar un paso.screenshot_on_step_success
(booleano): si se debe tomar una captura de pantalla después de completar un paso correctamente.screenshot_on_step_failure
(booleano): si se debe tomar una captura de pantalla después de que un paso falla.
with_screenshot_on_step_start(screenshot_on_step_start)
Acepta un argumento booleano, que indica si se debe tomar una captura de pantalla antes de iniciar un paso.
with_screenshot_on_step_success(screenshot_on_step_success)
Acepta un argumento booleano, que indica si se debe tomar una captura de pantalla después de completar un paso correctamente.
with_screenshot_on_step_failure(screenshot_on_step_failure)
Acepta un argumento booleano, que indica si se debe tomar una captura de pantalla después de que un paso falla.
get_screenshot_on_step_start()
Muestra si se debe tomar una captura de pantalla antes de iniciar un paso.
get_screenshot_on_step_success()
Muestra si se debe realizar una captura de pantalla después de completar un paso correctamente.
get_screenshot_on_step_failure()
Muestra si se debe tomar una captura de pantalla después de que un paso falla.
disable_step_screenshots()
Desactiva todas las opciones de captura de pantalla (get_screenshot_on_step_start, get_screenshot_on_step_success, y get_screenshot_on_step_failure).
enable_step_screenshots()
Habilita todas las opciones de captura de pantalla (get_screenshot_on_step_start, get_screenshot_on_step_success y get_screenshot_on_step_failure). Estos métodos no están habilitados de forma predeterminada.
setConfig(options) con respecto a las métricas de CloudWatch
Para los valores controlados que utilizan syn-python-selenium-1.1
o posteriores, las (opciones) para setConfig pueden incluir los siguientes parámetros booleanos que determinan qué métricas publica el valor controlado. El valor predeterminado para cada una de estas opciones es true
. Las opciones que comienzan con aggregated
determinan si la métrica se emite sin la dimensión CanaryName
. Se pueden utilizar estas métricas para ver los resultados agregados de todos los canaries. Las otras opciones determinan si la métrica se emite con la dimensión CanaryName
. Se pueden usar estas métricas para ver los resultados de cada valor controlado individualmente.
Para obtener una lista de las métricas de CloudWatch que los canaries emiten, consulte Métricas de CloudWatch que los canaries publican.
failed_canary_metric
(booleano): si se debe emitir la métricaFailed
(con la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.failed_requests_metric
(booleano): si se debe emitir la métricaFailed requests
(con la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.2xx_metric
(booleano): si se debe emitir la métrica2xx
(con la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.4xx_metric
(booleano): si se debe emitir la métrica4xx
(con la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.5xx_metric
(booleano): si se debe emitir la métrica5xx
(con la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.step_duration_metric
(booleano): si se debe emitir la métricaStep duration
(con las dimensionesCanaryName
yStepName
) para este valor controlado. El valor predeterminado estrue
.step_success_metric
(booleano): si se debe emitir la métricaStep success
(con las dimensionesCanaryName
yStepName
) para este valor controlado. El valor predeterminado estrue
.aggregated_failed_canary_metric
(booleano): si se debe emitir la métricaFailed
(sin la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.aggregated_failed_requests_metric
(booleano): si se debe emitir la métricaFailed Requests
(sin la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.aggregated_2xx_metric
(booleano): si se debe emitir la métrica2xx
(sin la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.aggregated_4xx_metric
(booleano): si se debe emitir la métrica4xx
(sin la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.aggregated_5xx_metric
(booleano): si se debe emitir la métrica5xx
(sin la dimensiónCanaryName
) para este valor controlado. El valor predeterminado estrue
.
with_2xx_metric(2xx_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica 2xx
con la dimensión CanaryName
para este valor controlado.
with_4xx_metric(4xx_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica 4xx
con la dimensión CanaryName
para este valor controlado.
with_5xx_metric(5xx_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica 5xx
con la dimensión CanaryName
para este valor controlado.
withAggregated2xxMetric(aggregated2xxMetric)
Acepta un argumento booleano, que especifica si se emitirá una métrica 2xx
sin dimensión para este valor controlado.
withAggregated4xxMetric(aggregated4xxMetric)
Acepta un argumento booleano, que especifica si se emitirá una métrica 4xx
sin dimensión para este valor controlado.
with_aggregated_5xx_metric(aggregated_5xx_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica 5xx
sin dimensión para este valor controlado.
with_aggregated_failed_canary_metric(aggregated_failed_canary_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica Failed
sin dimensión para este valor controlado.
with_aggregated_failed_requests_metric(aggregated_failed_requests_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica Failed
requests
sin dimensión para este valor controlado.
with_failed_canary_metric(failed_canary_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica Failed
con la dimensión CanaryName
para este valor controlado.
with_failed_requests_metric(failed_requests_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica Failed
requests
con la dimensión CanaryName
para este valor controlado.
with_step_duration_metric(step_duration_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica Duration
con la dimensión CanaryName
para este valor controlado.
with_step_success_metric(step_success_metric)
Acepta un argumento booleano, que especifica si se emitirá una métrica StepSuccess
con la dimensión CanaryName
para este valor controlado.
Métodos para habilitar o desactivar métricas
disable_aggregated_request_metrics()
Desactiva que el valor controlado emita todas las métricas de solicitud que se emiten sin dimensión CanaryName
.
disable_request_metrics()
Deshabilita todas las métricas de solicitud, incluidas las métricas por valor controlado y las métricas agregadas en todos los valores controlados.
disable_step_metrics()
Desactiva todas las métricas de pasos, incluidas las métricas de éxito y de duración de los pasos.
enable_aggregated_request_metrics()
Permite que el valor controlado emita todas las métricas de solicitud que se emiten sin dimensión CanaryName
.
enable_request_metrics()
Habilita todas las métricas de solicitud, incluidas las métricas por valor controlado y las métricas agregadas en todos los valores controlados.
enable_step_metrics()
Habilita todas las métricas de pasos, incluidas las métricas de éxito y de duración de los pasos.
Uso en valores controlados de la IU
Primero, importe la relación de Synthetics y obtenga la configuración. A continuación, establezca la configuración para cada opción mediante llamadas al método SetConfig con una de las siguientes opciones.
from aws_synthetics.common import synthetics_configuration synthetics_configuration.set_config( { "screenshot_on_step_start": False, "screenshot_on_step_success": False, "screenshot_on_step_failure": True } ) or
Or (Disyunción)
synthetics_configuration.with_screenshot_on_step_start(False).with_screenshot_on_step_success(False).with_screenshot_on_step_failure(True)
Para desactivar todas las capturas de pantalla, utilice la función disableStepScreenshots() como en este ejemplo.
synthetics_configuration.disable_step_screenshots()
Puede habilitar y desactivar las capturas de pantalla en cualquier punto del código. Por ejemplo, para desactivar las capturas de pantalla solo para un paso, se deben desactivar antes de ejecutar ese paso y habilitarlas después del paso.
set_config(options) para los valores controlados de la interfaz de usuario
A partir de syn-python-selenium-1.1
, para los valores controlados de la interfaz de usuario, set_config
puede incluir los siguientes parámetros booleanos:
continue_on_step_failure
(booleano): si se debe continuar con la ejecución del script valor controlado después de que un paso falle (esto se refiere a la función executeStep). Si algún paso falla, la ejecución del valor controlado seguirá marcándose como fallida. El valor predeterminado esfalse
.
Clase SyntheticsLogger
synthetics_logger
ingresa los registros tanto en la consola como en un archivo de registros local, en el mismo nivel de registro. Este archivo de registro se escribe en ambas ubicaciones solo si el nivel de registro coincide con el deseado para la función de registro a la que se llamó o está por debajo de este.
Los valores “DEBUG: ”, “INFO: ”, etc. se anteponen a las instrucciones de registro del archivo de registro local para que coincidan con el nivel de registro de la función a la que se llamó.
No es necesario utilizar synthetics_logger
para crear un archivo de registros que se carga en la ubicación de resultados de Amazon S3. En su lugar, puede crear un archivo de registro distinto en la carpeta /tmp
. Los archivos creados en la carpeta /tmp
se cargan en la ubicación de resultados del bucket de S3 como artefactos.
Para utilizar synthetics_logger
.
from aws_synthetics.common import synthetics_logger
Definiciones de funciones útiles:
Obtenga el nivel de registro:
log_level = synthetics_logger.get_level()
Establezca el nivel de registro:
synthetics_logger.set_level()
Registre un mensaje con un nivel especificado. El nivel puede ser DEBUG
, INFO
, WARN
o ERROR
, como en los siguientes ejemplos de sintaxis:
synthetics_logger.debug(message, *args, **kwargs)
synthetics_logger.info(message, *args, **kwargs)
synthetics_logger.log(message, *args, **kwargs)
synthetics_logger.warn(message, *args, **kwargs)
synthetics_logger.error(message, *args, **kwargs)
Para obtener información acerca de los parámetros de depuración, consulte los documentos estándar de Python en logging.debug
En estas funciones de registro, el message
es la cadena del formato del mensaje. Los args
son los argumentos que se fusionan en msg
que usan el operador de formato de cadena.
Hay tres argumentos de palabras clave en kwargs
:
exc_info
: si no se evalúa como false, agrega información de excepción al mensaje de registro.stack_info
: el valor predeterminado es false. Si es VERDADERO, agrega información de pila al mensaje de registro, incluida la llamada de registro real.extra
: el tercer argumento opcional de palabra clave, que se puede utilizar para especificar un diccionario que se utiliza para rellenar el__dict__
delLogRecord
que se ha creado para el evento de registro con atributos definidos por el usuario.
Ejemplos:
Registre un mensaje con el nivel DEBUG
:
synthetics_logger.debug('Starting step - login.')
Registre un mensaje con el nivel INFO
. logger.log
es sinónimo de logger.info
:
synthetics_logger.info('Successfully completed step - login.')
o
synthetics_logger.log('Successfully completed step - login.')
Registre un mensaje con el nivel WARN
:
synthetics_logger.warn('Warning encountered trying to publish %s', 'CloudWatch Metric')
Registre un mensaje con el nivel ERROR
:
synthetics_logger.error('Error encountered trying to publish %s', 'CloudWatch Metric')
Registre una excepción:
synthetics_logger.exception(message, *args, **kwargs)
Registre un mensaje con nivel ERROR
. La información de excepción se agrega al mensaje de registro. Debe llamar a esta función solo desde un controlador de excepciones.
Para obtener información acerca de los parámetros de excepción, consulte los documentos estándar de Python en logging.exception
El message
es la cadena en formato de mensaje. Los args
son los argumentos, que se fusionan en msg
mediante el operador de formato de cadena.
Hay tres argumentos de palabras clave en kwargs
:
exc_info
: si no se evalúa como false, agrega información de excepción al mensaje de registro.stack_info
: el valor predeterminado es false. Si es VERDADERO, agrega información de pila al mensaje de registro, incluida la llamada de registro real.extra
: el tercer argumento opcional de palabra clave, que se puede utilizar para especificar un diccionario que se utiliza para rellenar el__dict__
delLogRecord
que se ha creado para el evento de registro con atributos que el usuario ha definido.
Ejemplo:
synthetics_logger.exception('Error encountered trying to publish %s', 'CloudWatch Metric')
Clases y funciones de biblioteca de Python y Selenium que se aplican solo a canaries de la UI
Las siguientes funciones de la biblioteca de Selenium de CloudWatch Synthetics para Python solo son útiles para los valores controlados de la UI.
Clase SyntheticsBrowser
Cuando se crea una instancia de navegador mediante una llamada a synthetics_webdriver.Chrome()
, la instancia del navegador devuelta es del tipo SyntheticsBrowser
. La clase SyntheticsBrowser
controla el ChromeDriver y habilita el script valor controlado para manejar el navegador, lo que permite al WebDriver Selenium trabajar con Synthetics.
Además de los métodos estándar de Selenium, también proporciona los siguientes métodos.
set_viewport_size(ancho, alto)
Establece la ventana gráfica del navegador. Ejemplo:
browser.set_viewport_size(1920, 1080)
save_screenshot(nombre del archivo, sufijo)
Guarda capturas de pantalla en el directorio de /tmp
. Las capturas de pantalla se cargan desde allí a la carpeta de artefactos de valores controlados en el bucket de S3.
nombre del archivo es el nombre del archivo para la captura de pantalla, y sufijo es una cadena opcional que se utilizará para nombrar la captura de pantalla.
Ejemplo:
browser.save_screenshot('loaded.png', 'page1')
Clase SyntheticsWebDriver
Para utilizar esta clase, utilice lo siguiente en su script:
from aws_synthetics.selenium import synthetics_webdriver
add_execution_error(errorMessage, ex);
errorMessage
describe el error y ex
es la excepción que se encuentra
add_execution_error
puede usarse para establecer errores de ejecución para el valor controlado. Se produce un error en el valor controlado sin interrumpir la ejecución del script. Tampoco afecta a las métricas de successPercent
.
Debe realizar un seguimiento de los errores como errores de ejecución sólo si no son importantes para indicar el éxito o el error del script valor controlado.
A continuación, se muestra un ejemplo del uso de un add_execution_error
. Está supervisando la disponibilidad de su punto de conexión y tomando capturas de pantalla después de que la página se haya cargado. Debido a que el hecho de no tomar una captura de pantalla no determina la disponibilidad del punto de enlace, puede detectar cualquier error que encuentre al tomar capturas de pantalla y agregarlos como errores de ejecución. Las métricas de disponibilidad seguirán indicando que el punto de conexión está activo y en ejecución, pero el estado del valor controlado se marcará como fallido. El siguiente bloque de código de muestra detecta dicho error y lo agrega como un error de ejecución.
try: browser.save_screenshot("loaded.png") except Exception as ex: self.add_execution_error("Unable to take screenshot", ex)
add_user_agent(user_agent_str)
Añade el valor de user_agent_str
a la cabecera del agente de usuario del navegador. Debe asignar user_agent_str
antes de crear la instancia del navegador.
Ejemplo:
synthetics_webdriver.add_user_agent('MyApp-1.0')
execute_step(step_name, function_to_execute)
Procesa una función. También hace lo siguiente:
Registra que el paso se ha iniciado.
Toma una captura de pantalla denominada
<stepName>-starting
.Inicia un temporizador.
Ejecuta la función proporcionada.
Si la función devuelve resultados normalmente, cuenta como superada. Si la función falla, cuenta como error.
Finaliza el temporizador.
Registra si el paso se ha superado o no.
Toma una captura de pantalla denominada
<stepName>-succeeded
o<stepName>-failed
.Emite la métrica
stepName
SuccessPercent
, 100 para superado o 0 para no superado.Emite la métrica
stepName
Duration
, con un valor basado en las horas de inicio y de finalización del paso.Por último, devuelve el mismo resultado que
functionToExecute
o vuelve a arrojar el mismo error quefunctionToExecute
.
Ejemplo:
from selenium.webdriver.common.by import By def custom_actions(): #verify contains browser.find_element(By.XPATH, "//*[@id=\"id_1\"][contains(text(),'login')]") #click a button browser.find_element(By.XPATH, '//*[@id="submit"]/a').click() await synthetics_webdriver.execute_step("verify_click", custom_actions)
Chrome()
Lanza una instancia del navegador Chromium y muestra la instancia creada del navegador.
Ejemplo:
browser = synthetics_webdriver.Chrome() browser.get("https://example.com/)
Para lanzar un navegador en modo de incógnito, utilice lo siguiente:
add_argument('——incognito')
Para agregar la configuración del proxy, utilice lo siguiente:
add_argument('--proxy-server=%s' %
PROXY
)
Ejemplo:
from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("——incognito") browser = syn_webdriver.Chrome(chrome_options=chrome_options)