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.
Rubriques
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
est un objet, qui est un ensemble d'options configurables pour votre script Canary. Les sections suivantes expliquent les champs possibles dans options
.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étriqueFailed
(avec la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.failed_requests_metric
(booléen) : indique s'il faut émettre la métriqueFailed requests
(avec la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.2xx_metric
(booléen) : indique s'il faut émettre la métrique2xx
(avec la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.4xx_metric
(booléen) : indique s'il faut émettre la métrique4xx
(avec la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.5xx_metric
(booléen) : indique s'il faut émettre la métrique5xx
(avec la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.step_duration_metric
(booléen) : indique s'il faut émettre la métriqueStep duration
(avec les dimensionsCanaryName
StepName
) pour ce script Canary. L’argument par défaut esttrue
.step_success_metric
(booléen) : indique s'il faut émettre la métriqueStep success
(avec les dimensionsCanaryName
StepName
) pour ce script Canary. L’argument par défaut esttrue
.aggregated_failed_canary_metric
(booléen) : indique s'il faut émettre la métriqueFailed
(sans la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.aggregated_failed_requests_metric
(booléen) : indique s'il faut émettre la métriqueFailed Requests
(sans la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.aggregated_2xx_metric
(booléen) : indique s'il faut émettre la métrique2xx
(sans la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.aggregated_4xx_metric
(booléen) : indique s'il faut émettre la métrique4xx
(sans la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.aggregated_5xx_metric
(booléen) : indique s'il faut émettre la métrique5xx
(sans la dimensionCanaryName
) pour ce script Canary. L’argument par défaut esttrue
.
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 estfalse
.
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 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__
duLogRecord
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
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__
duLogRecord
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
Rubriques
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 quefunctionToExecute
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)
get_http_response (URL)
Envoie une requête HTTP à l'URL fournie et renvoie le code de réponse de la requête HTTP. Si une exception s'est produite lors de la requête HTTP, une chaîne avec la valeur « error » est renvoyée à la place.
Exemple :
response_code = syn_webdriver.get_http_response(url) if not response_code or response_code == "error" or response_code < 200 or response_code > 299: raise Exception("Failed to load page!")
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)