Fonctions de bibliothèque disponibles pour les scripts Canary Python utilisant Selenium - Amazon CloudWatch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fonctions de bibliothèque disponibles pour les scripts Canary Python utilisant Selenium

Cette section répertorie les fonctions de bibliothèque Selenium disponibles pour les scripts Canary Python.

Classes et fonctions de bibliothèque Python et Selenium qui s'appliquent à tous les scripts Canary

Les fonctions de la bibliothèque CloudWatch Synthetics Selenium pour Python suivantes sont utiles pour tous les canaris.

SyntheticsConfiguration classe

Vous pouvez utiliser la SyntheticsConfiguration classe pour configurer le comportement des fonctions de la bibliothèque Synthetics. Par exemple, vous pouvez utiliser cette classe pour configurer la fonction executeStep() pour ne pas prendre de captures d'écran.

Vous pouvez définir CloudWatch des configurations Synthetics au niveau global.

Définitions des fonctions :

set_config(options)

from aws_synthetics.common import synthetics_configuration

options est un objet, qui est un ensemble d'options configurables pour votre script Canary. Les sections suivantes expliquent les champs possibles dans options.

  • screenshot_on_step_start (booléen) : indique s'il faut prendre une capture d'écran avant de commencer une étape.

  • screenshot_on_step_success (booléen) : indique s'il faut prendre une capture d'écran après la réussite d'une étape.

  • screenshot_on_step_failure (booléen) : indique s'il faut prendre une capture d'écran après l'échec d'une étape.

with_screenshot_on_step_start(screenshot_on_step_start)

Accepte un argument booléen qui indique s'il faut prendre une capture d'écran avant de commencer une étape.

with_screenshot_on_step_success(screenshot_on_step_success)

Accepte un argument booléen qui indique s'il faut prendre une capture d'écran après la réussite d'une étape.

with_screenshot_on_step_failure(screenshot_on_step_failure)

Accepte un argument booléen qui indique s'il faut prendre une capture d'écran après l'échec d'une étape.

get_screenshot_on_step_start()

Renvoie une valeur indiquant s'il faut prendre une capture d'écran avant de commencer une étape.

get_screenshot_on_step_success()

Renvoie une valeur indiquant s'il faut prendre une capture d'écran après la réussite d'une étape.

get_screenshot_on_step_failure()

Renvoie une valeur indiquant s'il faut prendre une capture d'écran après l'échec d'une étape.

disable_step_screenshots()

Désactive toutes les options de capture d'écran (get_screenshot_on_step_start, get_screenshot_on_step_success et get_screenshot_on_step_failure).

enable_step_screenshots()

Active toutes les options de capture d'écran (get_screenshot_on_step_start, get_screenshot_on_step_success et get_screenshot_on_step_failure). Par défaut, toutes ces méthodes sont activées.

SetConfig (options) concernant les métriques CloudWatch

Pour les scripts Canary utilisant syn-python-selenium-1.1 ou version ultérieure, les (options) pour setConfig peuvent inclure les paramètres booléens suivants qui déterminent les métriques publiées par le script Canary. La valeur par défaut de chacune de ces options est true. Les options qui commencent par aggregated déterminent si la métrique est émise sans la dimension CanaryName. Vous pouvez utiliser ces métriques pour afficher les résultats agrégés de tous vos scripts Canary. Les autres options déterminent si la métrique est émise avec la dimension CanaryName. Vous pouvez utiliser ces métriques pour afficher les résultats de chaque script Canary individuel.

Pour une liste des CloudWatch métriques émises par les canaris, voirCloudWatch statistiques publiées par canaries.

  • failed_canary_metric (booléen) : indique s'il faut émettre la métrique Failed (avec la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

  • failed_requests_metric (booléen) : indique s'il faut émettre la métrique Failed requests (avec la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

  • 2xx_metric (booléen) : indique s'il faut émettre la métrique 2xx (avec la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

  • 4xx_metric (booléen) : indique s'il faut émettre la métrique 4xx (avec la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

  • 5xx_metric (booléen) : indique s'il faut émettre la métrique 5xx (avec la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

  • step_duration_metric (booléen) : indique s'il faut émettre la métrique Step duration (avec les dimensions CanaryName StepName) pour ce script Canary. L’argument par défaut est true.

  • step_success_metric (booléen) : indique s'il faut émettre la métrique Step success (avec les dimensions CanaryName StepName) pour ce script Canary. L’argument par défaut est true.

  • aggregated_failed_canary_metric (booléen) : indique s'il faut émettre la métrique Failed (sans la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

  • aggregated_failed_requests_metric (booléen) : indique s'il faut émettre la métrique Failed Requests (sans la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

  • aggregated_2xx_metric (booléen) : indique s'il faut émettre la métrique 2xx (sans la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

  • aggregated_4xx_metric (booléen) : indique s'il faut émettre la métrique 4xx (sans la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

  • aggregated_5xx_metric (booléen) : indique s'il faut émettre la métrique 5xx (sans la dimension CanaryName) pour ce script Canary. L’argument par défaut est true.

with_2xx_metric(2xx_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique 2xx avec la dimension CanaryName pour ce script Canary.

with_4xx_metric(4xx_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique 4xx avec la dimension CanaryName pour ce script Canary.

with_5xx_metric(5xx_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique 5xx avec la dimension CanaryName pour ce script Canary.

withAggregated2xxMetric(aggregated2xxMetric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique 2xx sans dimension pour ce script Canary.

withAggregated4xxMetric(aggregated4xxMetric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique 4xx sans dimension pour ce script Canary.

with_aggregated_5xx_metric(aggregated_5xx_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique 5xx sans dimension pour ce script Canary.

with_aggregated_failed_canary_metric(aggregated_failed_canary_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique Failed sans dimension pour ce script Canary.

with_aggregated_failed_requests_metric(aggregated_failed_requests_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique Failed requests sans dimension pour ce script Canary.

with_failed_canary_metric(failed_canary_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique Failed avec la dimension CanaryName pour ce script Canary.

with_failed_requests_metric(failed_requests_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique Failed requests avec la dimension CanaryName pour ce script Canary.

with_step_duration_metric(step_duration_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique Duration avec la dimension CanaryName pour ce script Canary.

with_step_success_metric(step_success_metric)

Accepte un argument booléen qui spécifie s'il faut émettre une métrique StepSuccess avec la dimension CanaryName pour ce script Canary.

Méthodes pour activer ou désactiver les métriques

disable_aggregated_request_metrics()

Désactive l'émission par le script Canary de toutes les métriques de demande émises sans dimension CanaryName.

disable_request_metrics()

Désactive toutes les métriques de demande, y compris les métriques par script Canary et les métriques agrégées pour tous les scripts Canary.

disable_step_metrics()

Désactive toutes les métriques d'étapes, y compris les métriques de succès des étapes et les métriques de durée des étapes.

enable_aggregated_request_metrics()

Active l'émission par le script Canary de toutes les métriques de demande émises sans dimension CanaryName.

enable_request_metrics()

Active toutes les métriques de demande, y compris les métriques par script Canary et les métriques agrégées pour tous les scripts Canary.

enable_step_metrics()

Active toutes les métriques d'étapes, y compris les métriques de succès des étapes et les métriques de durée des étapes.

Utilisation dans les scripts canary d'interface utilisateur

Tout d'abord, importez la dépendance Synthetics et récupérez la configuration. Ensuite, définissez la configuration de chaque option en appelant la méthode setConfig à l'aide de l'une des options suivantes.

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

Ou

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

Pour désactiver toutes les captures d'écran, utilisez la fonction disableStepScreenshots () comme dans cet exemple.

synthetics_configuration.disable_step_screenshots()

Vous pouvez activer et désactiver des captures d'écran à tout moment dans le code. Par exemple, pour désactiver les captures d'écran pour une seule étape, désactivez-les avant d'exécuter cette étape, puis activez-les après l'étape.

set_config(options) pour les scripts Canary d'interface utilisateur

En commençant par syn-python-selenium-1.1, pour les scripts Canary d'interface utilisateur, set_config peut inclure les paramètres booléens suivants :

  • continue_on_step_failure (booléen) : indique s'il faut poursuivre l'exécution du script Canary après l'échec d'une étape (cela fait référence à la fonction executeStep). Si une étape échoue, l'exécution du script Canary sera toujours marquée comme ayant échoué. L’argument par défaut est false.

SyntheticsLogger classe

synthetics_logger écrit les journaux dans la console et dans un fichier journal local au même niveau de journalisation. Ce fichier journal est écrit dans les deux emplacements seulement si le niveau de journalisation est égal ou inférieur au niveau de journalisation souhaité de la fonction de journalisation qui a été appelée.

Les instructions de journalisation dans le fichier journal local sont précédées de « DEBUG: », « INFO: », etc., pour respecter le niveau de journalisation de la fonction appelée.

L'utilisation de synthetics_logger n'est pas nécessaire pour créer un fichier journal qui est téléchargé dans votre emplacement des résultats Amazon S3. Vous pouvez créer à la place un autre fichier journal dans le dossier /tmp. Tous les fichiers créés sous le dossier /tmp sont téléchargés vers l'emplacement des résultats dans le compartiment S3 en tant qu'artefacts.

Pour utiliser synthetics_logger :

from aws_synthetics.common import synthetics_logger

Définitions de fonctions utiles :

Obtenir le niveau de journalisation :

log_level = synthetics_logger.get_level()

Définir le niveau de journalisation :

synthetics_logger.set_level()

Journaliser un message avec un niveau spécifié. Le niveau peut être DEBUG, INFO, WARN ou ERROR, comme dans les exemples de syntaxe suivants :

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)

Pour plus d'informations sur les paramètres de débogage, consultez logging.debug dans la documentation Python standard.

Dans ces fonctions de journalisation, le message est la chaîne de format du message. Les args sont les arguments qui sont fusionnés dans le msg à l'aide de l'opérateur de formatage de chaîne.

Il y a trois arguments de mot-clé dans kwargs :

  • exc_info : s'il n'est pas évalué comme false (faux), ajoute des informations d'exception au message de journalisation.

  • stack_info : la valeur par défaut est false (faux). Si true (vrai), ajoute des informations de pile au message de journalisation, y compris l'appel de journalisation réel.

  • extra : le troisième argument de mot-clé facultatif, que vous pouvez utiliser pour transmettre un dictionnaire qui est utilisé pour remplir le __dict__ du LogRecord créé pour l'événement de journalisation avec des attributs définis par l'utilisateur.

Exemples :

Journaliser un message avec le niveau DEBUG:

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

Journaliser un message avec le niveau INFO. logger.log est un synonyme de logger.info :

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

or

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

Journaliser un message avec le niveau WARN :

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

Journaliser un message avec le niveau ERROR :

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

Journaliser une exception :

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

Journalise un message avec le niveau ERROR. Des informations d'exception sont ajoutées au message de journalisation. Vous ne devriez appeler cette fonction qu'à partir d'un gestionnaire d'exceptions.

Pour plus d'informations sur les paramètres d'exception, consultez logging.exception dans la documentation Python standard.

Le message est la chaîne de format du message. Les args sont les arguments qui sont fusionnés dans le msg à l'aide de l'opérateur de formatage de chaîne.

Il y a trois arguments de mot-clé dans kwargs :

  • exc_info : s'il n'est pas évalué comme false (faux), ajoute des informations d'exception au message de journalisation.

  • stack_info : la valeur par défaut est false (faux). Si true (vrai), ajoute des informations de pile au message de journalisation, y compris l'appel de journalisation réel.

  • extra : le troisième argument de mot-clé facultatif, que vous pouvez utiliser pour transmettre un dictionnaire qui est utilisé pour remplir le __dict__ du LogRecord créé pour l'événement de journalisation avec des attributs définis par l'utilisateur.

Exemple :

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

Classes et fonctions de bibliothèque Python et Selenium qui s'appliquent aux scripts Canary d'interface utilisateur uniquement

Les fonctions suivantes de la bibliothèque CloudWatch Synthetics Selenium pour Python ne sont utiles que pour les canaris de l'interface utilisateur.

SyntheticsBrowser classe

Lorsque vous créez une instance de navigateur en appelant synthetics_webdriver.Chrome(), l'instance de navigateur renvoyée est du type SyntheticsBrowser. La SyntheticsBrowser classe contrôle le ChromeDriver navigateur et permet au script Canary de piloter le navigateur, permettant ainsi au Selenium de WebDriver fonctionner avec Synthetics.

En plus des méthodes Selenium standard, elle fournit également les méthodes suivantes.

set_viewport_size(largeur, hauteur)

Définit la fenêtre d'affichage du navigateur. Exemple :

browser.set_viewport_size(1920, 1080)

save_screenshot(filename, suffix)

Enregistre les captures d'écran dans le répertoire /tmp. Les captures d'écran sont téléchargées à partir de ce répertoire dans le dossier des artefacts des scripts Canary dans le compartiment S3.

filename est le nom de fichier de la capture d'écran et suffix est une chaîne facultative à utiliser pour nommer la capture d'écran.

Exemple :

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

SyntheticsWebDriver classe

Pour utiliser cette classe, utilisez ce qui suit dans votre script :

from aws_synthetics.selenium import synthetics_webdriver

add_execution_error(errorMessage, ex);

errorMessage décrit l'erreur et ex est l'exception rencontrée.

Vous pouvez utiliser add_execution_error pour définir les erreurs d'exécution pour votre script Canary. Ce code fait échouer le script Canary sans interrompre l'exécution du script. Cela n'a pas non plus d'impact sur vos métriques successPercent.

Vous ne devriez suivre les erreurs comme des erreurs d'exécution que si elles ne sont pas importantes pour indiquer le succès ou l'échec de votre script Canary.

L'exemple suivant illustre l'utilisation de add_execution_error. Vous surveillez la disponibilité de votre point de terminaison et vous prenez des captures d'écran après le chargement de la page. Étant donné que l'échec de la prise d'une capture d'écran ne détermine pas la disponibilité du point de terminaison, vous pouvez détecter toutes les erreurs rencontrées lors de la prise de captures d'écran et les ajouter en tant qu'erreurs d'exécution. Vos métriques de disponibilité indiqueront toujours que le point de terminaison est opérationnel, mais le statut de votre script Canary indiquera qu'il a échoué. L'exemple de bloc de code suivant détecte une telle erreur et l'ajoute en tant qu'erreur d'exécution.

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)

Ajoute la valeur de user_agent_str à l'en-tête de l'agent utilisateur du navigateur. Vous devez assigner user_agent_str avant de créer l'instance du navigateur.

Exemple :

synthetics_webdriver.add_user_agent('MyApp-1.0')

execute_step(step_name, function_to_execute)

Traite une fonction. Elle effectue également les opérations suivantes :

  • Elle consigne le fait que l'étape a commencé.

  • Prend une capture d'écran appelée <stepName>-starting.

  • Elle démarre un minuteur.

  • Elle exécute la fonction fournie.

  • Si la fonction a un retour normal, elle est considérée comme une réussite. Si la fonction lève une exception, elle est considérée comme un échec.

  • Elle arrête le minuteur.

  • Elle consigne le fait que l'étape a réussi ou échoué.

  • Prend une capture d'écran appelée <stepName>-succeeded ou <stepName>-failed.

  • Elle émet la métrique stepName SuccessPercent, 100 pour succès ou 0 pour échec.

  • Elle émet la métrique stepName Duration avec une valeur basée sur les heures de début et de fin de l'étape.

  • Enfin, elle retourne ce que functionToExecute a retourné ou lève à son tour ce que functionToExecute a levé.

Exemple :

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

Lance une instance du navigateur Chromium et renvoie l'instance créée du navigateur.

Exemple :

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

Pour lancer un navigateur en mode navigation privée, utilisez ce qui suit :

add_argument('——incognito')

Pour ajouter des paramètres proxys, utilisez ce qui suit :

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

Exemple :

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