Funzioni di libreria disponibili per gli script canary Python che usano Selenium - Amazon CloudWatch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzioni di libreria disponibili per gli script canary Python che usano Selenium

Questa sezione elenca le funzioni di libreria di Selenium disponibili per gli script canary Python.

Classi e funzioni della libreria Python e Selenium che si applicano a tutti i canary

Le seguenti funzioni della libreria CloudWatch Synthetics Selenium per Python sono utili per tutti i canarini.

SyntheticsConfiguration classe

È possibile utilizzare la SyntheticsConfiguration classe per configurare il comportamento delle funzioni della libreria Synthetics. Ad esempio, puoi utilizzare questa classe per configurare la funzione executeStep() per non acquisire screenshot.

È possibile impostare le configurazioni CloudWatch Synthetics a livello globale.

Definizioni della funzione:

set_config(options)

from aws_synthetics.common import synthetics_configuration

options è un oggetto, che è un insieme di opzioni configurabili per il tuo canary. Le seguenti sezioni spiegano i campi possibili in options.

  • screenshot_on_step_start (booleano): indica se fare uno screenshot prima di iniziare una fase.

  • screenshot_on_step_success (booleano): indica se acquisire uno screenshot dopo aver completato una fase riuscita.

  • screenshot_on_step_failure (booleano): indica se acquisire uno screenshot dopo il fallimento di una fase.

with_screenshot_on_step_start(screenshot_on_step_start)

Accetta un argomento booleano, che indica se eseguire uno screenshot prima di iniziare una fase.

with_screenshot_on_step_success(screenshot_on_step_success)

Accetta un argomento booleano, che indica se acquisire uno screenshot dopo aver completato correttamente una fase.

with_screenshot_on_step_failure(screenshot_on_step_failure)

Accetta un argomento booleano, che indica se acquisire uno screenshot dopo il fallimento di una fase.

get_screenshot_on_step_start()

Restituisce se acquisire uno screenshot prima di iniziare una fase.

get_screenshot_on_step_success()

Restituisce se acquisire uno screenshot dopo aver completato correttamente una fase.

get_screenshot_on_step_failure()

Restituisce se acquisire uno screenshot dopo che una fase fallisce.

disable_step_screenshots()

Disabilita tutte le opzioni di screenshot (get_screenshot_on_step_start, get_screenshot_on_step_success e get_screenshot_on_step_failure).

enable_step_screenshots()

Abilita tutte le opzioni di screenshot (get_screenshot_on_step_start, get_screenshot_on_step_success e get_screenshot_on_step_failure). Per impostazione predefinita, tutti questi metodi sono abilitati.

setConfig (opzioni) relative alle metriche CloudWatch

Per i canary che utilizzano syn-python-selenium-1.1 o versione successiva, (options) per setConfig può includere i seguenti parametri booleani che determinano quali parametri vengono pubblicati dal canary. Il valore predefinito per ciascuna di queste opzioni è true. Le opzioni che iniziano con aggregated determinano se il parametro viene emesso senza destinazione CanaryName. Puoi usare questi parametri per visualizzare i risultati aggregati per tutti i canary. Le altre opzioni determinano se il parametro viene emesso con la dimensione CanaryName. Puoi usare questi parametri per visualizzare i risultati per ogni singolo canary.

Per un elenco delle CloudWatch metriche emesse dai canarini, vedi. CloudWatch metriche pubblicate da canaries

  • failed_canary_metric (booleano): indica se emettere il parametro Failed (con la dimensione CanaryName) per questo canary. Il valore predefinito è true.

  • failed_requests_metric (booleano): indica se emettere il parametro Failed requests (con la dimensione CanaryName) per questo canary. Il valore predefinito è true.

  • 2xx_metric (booleano): indica se emettere il parametro 2xx (con la dimensione CanaryName) per questo canary. Il valore predefinito è true.

  • 4xx_metric (booleano): indica se emettere il parametro 4xx (con la dimensione CanaryName) per questo canary. Il valore predefinito è true.

  • 5xx_metric (booleano): indica se emettere il parametro 5xx (con la dimensione CanaryName) per questo canary. Il valore predefinito è true.

  • step_duration_metric (booleano): indica se emettere il parametro Step duration (con le dimensioni CanaryName StepName) per questo canary. Il valore predefinito è true.

  • step_success_metric (booleano): indica se emettere il parametro Step success (con le dimensioni CanaryName StepName) per questo canary. Il valore predefinito è true.

  • aggregated_failed_canary_metric (booleano): indica se emettere il parametro Failed (senza la dimensione CanaryName) per questo canary. Il valore predefinito è true.

  • aggregated_failed_requests_metric (booleano): indica se emettere il parametro Failed Requests (senza la dimensione CanaryName) per questo canary. Il valore predefinito è true.

  • aggregated_2xx_metric (booleano): indica se emettere il parametro 2xx (senza la dimensione CanaryName) per questo canary. Il valore predefinito è true.

  • aggregated_4xx_metric (booleano): indica se emettere il parametro 4xx (senza la dimensione CanaryName) per questo canary. Il valore predefinito è true.

  • aggregated_5xx_metric (booleano): indica se emettere il parametro 5xx (senza la dimensione CanaryName) per questo canary. Il valore predefinito è true.

with_2xx_metric(2xx_metric)

Accetta un argomento booleano, che specifica se emettere un parametro 2xx con dimensione CanaryName per questo canary.

with_4xx_metric(4xx_metric)

Accetta un argomento booleano, che specifica se emettere un parametro 4xx con dimensione CanaryName per questo canary.

with_5xx_metric(5xx_metric)

Accetta un argomento booleano, che specifica se emettere un parametro 5xx con dimensione CanaryName per questo canary.

withAggregated2xxMetric(aggregated2xxMetric)

Accetta un argomento booleano, che specifica se emettere un parametro 2xx senza alcuna dimensione per questo canary.

withAggregated4xxMetric(aggregated4xxMetric)

Accetta un argomento booleano, che specifica se emettere un parametro 4xx senza alcuna dimensione per questo canary.

with_aggregated_5xx_metric(aggregated_5xx_metric)

Accetta un argomento booleano, che specifica se emettere un parametro 5xx senza alcuna dimensione per questo canary.

with_aggregated_failed_canary_metric(aggregated_failed_canary_metric)

Accetta un argomento booleano, che specifica se emettere un parametro Failed senza alcuna dimensione per questo canary.

with_aggregated_failed_requests_metric(aggregated_failed_requests_metric)

Accetta un argomento booleano, che specifica se emettere un parametro Failed requests senza alcuna dimensione per questo canary.

with_failed_canary_metric(failed_canary_metric)

Accetta un argomento booleano, che specifica se emettere un parametro Failed con dimensione CanaryName per questo canary.

with_failed_requests_metric(failed_requests_metric)

Accetta un argomento booleano, che specifica se emettere un parametro Failed requests con dimensione CanaryName per questo canary.

with_step_duration_metric(step_duration_metric)

Accetta un argomento booleano, che specifica se emettere un parametro Duration con dimensione CanaryName per questo canary.

with_step_success_metric(step_success_metric)

Accetta un argomento booleano, che specifica se emettere un parametro StepSuccess con dimensione CanaryName per questo canary.

Metodi per abilitare o disabilitare i parametri

disable_aggregated_request_metrics()

Disabilita il canary dall'emettere tutti i parametri delle richieste emessi senza dimensione CanaryName.

disable_request_metrics()

Disabilita tutti i parametri delle richieste, inclusi i parametri dei canary e i parametri aggregati in tutti i canary.

disable_step_metrics()

Disabilita tutti i parametri dei passaggi, inclusi sia quelli di riuscita che di durata.

enable_aggregated_request_metrics()

Consente al canary di emettere tutti i parametri della richiesta emessi senza la dimensione CanaryName.

enable_request_metrics()

Abilita tutti i parametri delle richieste, inclusi i parametri dei canary e i parametri aggregati in tutti i canary.

enable_step_metrics()

Abilita tutti i parametri dei passaggi, inclusi sia quelli di riuscita che di durata.

Utilizzo in canary dell'interfaccia utente

Innanzitutto, importa la dipendenza di Synthetics e recupera la configurazione. Quindi, imposta la configurazione per ogni opzione chiamando il metodo setConfig utilizzando una delle opzioni seguenti.

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

Oppure

synthetics_configuration.with_screenshot_on_step_start(False).with_screenshot_on_step_success(False).with_screenshot_on_step_failure(True)

Per disabilitare tutte le schermate, utilizzate la funzione disableStepScreenshots () come in questo esempio.

synthetics_configuration.disable_step_screenshots()

Puoi abilitare e disabilitare gli screenshot in qualsiasi punto del codice. Ad esempio, per disabilitare gli screenshot solo per una fase, disattivali prima di eseguire tale fase e quindi attivali dopo la fase.

set_config(options) per canary dell'interfaccia utente

A partire da syn-python-selenium-1.1, per i canary dell'interfaccia utente, set_config può includere i seguenti parametri booleani:

  • continue_on_step_failure (booleano): indica se continuare con l'esecuzione dello script canary dopo che una fase ha esito negativo (questo si riferisce alla funzione executeStep). Se le fasi hanno esito negativo, l'esecuzione del canary verrà comunque contrassegnata come fallita. Il valore predefinito è false.

SyntheticsLogger classe

synthetics_logger scrive i log sia nella console che in un file di log locale allo stesso livello di log. Questo file di log viene scritto in entrambe le posizioni solo se il livello di log è pari o inferiore al livello di registrazione desiderato della funzione di log chiamata.

Le istruzioni di registrazione nel file di log locale sono precedute da "DEBUG: ", "INFO: " e così via per corrispondere al livello di log della funzione che è stata chiamata.

L'utilizzo di synthetics_logger non è necessario per creare un file di log che viene caricato nel percorso dei risultati di Amazon S3. Puoi invece creare un file di log diverso nella cartella /tmp. Tutti i file creati nella cartella /tmp vengono caricati nella posizione dei risultati nel bucket S3 come artefatti.

Per utilizzare synthetics_logger:

from aws_synthetics.common import synthetics_logger

Definizioni utili delle funzioni:

Ottenere il livello di log:

log_level = synthetics_logger.get_level()

Impostare il livello di log:

synthetics_logger.set_level()

Registrare un messaggio con un livello specificato. Il livello può essere DEBUG, INFO, WARN oppure ERROR, come negli esempi di sintassi seguenti:

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)

Per informazioni sui parametri di debug, consulta la documentazione standard di Python all'indirizzo logging.debug

In queste funzioni di registrazione, message è la stringa di formato del messaggio. args sono gli argomenti che vengono uniti in msg utilizzando l'operatore di formattazione delle stringhe.

Ci sono tre argomenti della parola chiave in kwargs:

  • exc_info: se non viene valutato come false (falso), aggiunge informazioni sulle eccezioni al messaggio di log.

  • stack_info: imposta il valore predefinito su false (falso). Se true (vero), aggiunge le informazioni sullo stack al messaggio di log, inclusa la chiamata di registrazione effettiva.

  • extra: il terzo argomento della parola chiave facoltativo, che puoi utilizzare per il passaggio a un dizionario utilizzato per popolare il __dict__ di LogRecord creato per l'evento di log con attributi definiti dall'utente.

Esempi:

Registrare un messaggio con il livello DEBUG:

synthetics_logger.debug('Starting step - login.')

Registrare un messaggio con il livello INFO. logger.log è sinonimo di logger.info:

synthetics_logger.info('Successfully completed step - login.')

oppure

synthetics_logger.log('Successfully completed step - login.')

Registrare un messaggio con il livello WARN:

synthetics_logger.warn('Warning encountered trying to publish %s', 'CloudWatch Metric')

Registrare un messaggio con il livello ERROR:

synthetics_logger.error('Error encountered trying to publish %s', 'CloudWatch Metric')

Registrare un'eccezione:

synthetics_logger.exception(message, *args, **kwargs)

Registra un messaggio con il livello ERROR. Le informazioni sulle eccezioni vengono aggiunte al messaggio di log. Dovresti chiamare questa funzione solo da un gestore di eccezioni.

Per informazioni sui parametri di eccezione, consulta la documentazione standard di Python all'indirizzo logging.exception

message è la stringa di formato del messaggio. args sono gli argomenti che vengono uniti in msg utilizzando l'operatore di formattazione delle stringhe.

Ci sono tre argomenti della parola chiave in kwargs:

  • exc_info: se non viene valutato come false (falso), aggiunge informazioni sulle eccezioni al messaggio di log.

  • stack_info: imposta il valore predefinito su false (falso). Se true (vero), aggiunge le informazioni sullo stack al messaggio di log, inclusa la chiamata di registrazione effettiva.

  • extra: il terzo argomento della parola chiave facoltativo, che puoi utilizzare per il passaggio a un dizionario utilizzato per popolare il __dict__ di LogRecord creato per l'evento di registrazione con attributi definiti dall'utente.

Esempio:

synthetics_logger.exception('Error encountered trying to publish %s', 'CloudWatch Metric')

Classi e funzioni della libreria Python e Selenium che si applicano solo ai canary dell'interfaccia utente

Le seguenti funzioni della libreria CloudWatch Synthetics Selenium per Python sono utili solo per i canari dell'interfaccia utente.

SyntheticsBrowser classe

Quando crei un'istanza del browser chiamando synthetics_webdriver.Chrome(), l'istanza del browser restituita è del tipo SyntheticsBrowser. La SyntheticsBrowser classe controlla e abilita lo script canary per guidare il browser, permettendo a Selenium di funzionare con WebDriver Synthetics. ChromeDriver

Oltre ai metodi standard di Selenium, offre anche i seguenti metodi.

set_viewport_size(width, height)

Imposta l'area di visualizzazione del browser. Esempio:

browser.set_viewport_size(1920, 1080)

save_screenshot(filename, suffix)

Salva gli screenshot nella directory /tmp. Gli screenshot vengono caricati da lì nella cartella degli artefatti del canary nel bucket S3.

filename è il nome del file per lo screenshot, e suffix è una stringa opzionale da utilizzare per nominare lo screenshot.

Esempio:

browser.save_screenshot('loaded.png', 'page1')

SyntheticsWebDriver classe

Per utilizzare questa classe, utilizza i seguenti elementi nello script:

from aws_synthetics.selenium import synthetics_webdriver

addExecutionError(errorMessage, ex);

errorMessage descrive l'errore e ex è l'eccezione che si verifica

Puoi utilizzare add_execution_error per impostare gli errori di esecuzione per il tuo canary. Fa fallire il canary senza interrompere l'esecuzione dello script. Inoltre, non influisce sui tuoi parametri successPercent.

È necessario tenere traccia degli errori come errori di esecuzione solo se non sono importanti per indicare il successo o il fallimento dello script canary.

Di seguito è illustrato un esempio dell'uso dell'elemento add_execution_error. Stai monitorando la disponibilità del tuo endpoint e acquisendo screenshot dopo che la pagina è stata caricata. Poiché l'errore di acquisizione di uno screenshot non determina la disponibilità dell'endpoint, puoi rilevare eventuali errori riscontrati durante l'acquisizione di screenshot e aggiungerli come errori di esecuzione. I parametri di disponibilità indicheranno comunque che l'endpoint è attivo e funzionante, ma lo stato del canary verrà contrassegnato come non riuscito. Il seguente blocco di codice di esempio rileva tale errore e lo aggiunge come errore di esecuzione.

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)

Aggiunge il valore di user_agent_str all'intestazione dell'agente utente del browser. È necessario assegnare user_agent_str prima di creare l'istanza del browser.

Esempio:

synthetics_webdriver.add_user_agent('MyApp-1.0')

execute_step(step_name, function_to_execute)

Elabora una funzione. Inoltre esegue le seguenti operazioni:

  • Registra che il passaggio è iniziato.

  • Acquisisce uno screenshot denominato <stepName>-starting.

  • Avvia un timer.

  • Esegue la funzione fornita.

  • Se la funzione viene restituita normalmente, conta come passaggio. Se la funzione genera, conta come errore.

  • Termina il timer.

  • Registra se il passaggio è riuscito o non è riuscito

  • Prende uno screenshot chiamato <stepName>-succeeded o <stepName>-failed.

  • Emette la metrica stepName SuccessPercent, 100 per passato o 0 per errore.

  • Genera il parametro stepName Duration con un valore basato sull'ora di inizio e di fine del passaggio.

  • Infine, restituisce ciò che il functionToExecute ha restituito o rigenera ciò che functionToExecute ha generato.

Esempio:

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()

Avvia un'istanza del browser Chromium e restituisce l'istanza creata del browser.

Esempio:

browser = synthetics_webdriver.Chrome() browser.get("https://example.com/)

Per avviare un browser in modalità di navigazione in incognito, utilizza quanto segue:

add_argument('——incognito')

Per aggiungere impostazioni proxy, utilizza quanto segue:

add_argument('--proxy-server=%s' % PROXY)

Esempio:

from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("——incognito") browser = syn_webdriver.Chrome(chrome_options=chrome_options)