Verfügbare Bibliotheksfunktionen für Python-Canary-Skripte mit Selenium - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verfügbare Bibliotheksfunktionen für Python-Canary-Skripte mit Selenium

Dieser Abschnitt listet die Selenium-Bibliotheksfunktionen auf, die für Python-Canary-Skripte verfügbar sind

Python- und Selenium-Bibliotheksklassen und Funktionen, die für alle Canarys gelten

Die folgenden CloudWatch Synthetics Selenium-Bibliotheksfunktionen für Python sind für alle Kanarienvögel nützlich.

SyntheticsConfiguration Klasse

Sie können die SyntheticsConfiguration Klasse verwenden, um das Verhalten von Synthetics-Bibliotheksfunktionen zu konfigurieren. Sie können diese Klasse beispielsweise verwenden, um die executeStep()-Funktion so zu konfigurieren, dass keine Screenshots erfasst werden.

Sie können CloudWatch Synthetics-Konfigurationen auf globaler Ebene festlegen.

Funktionsdefinitionen:

set_config (Optionen)

from aws_synthetics.common import synthetics_configuration

options ist ein Objekt, bei dem es sich um eine Reihe konfigurierbarer Optionen für Ihren Canary handelt. In den folgenden Abschnitten werden die möglichen Felder in options erläutert.

  • screenshot_on_step_start (boolean) – Gibt an, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.

  • screenshot_on_step_success (boolean) – Gibt an, ob nach einem erfolgreichen Schritt ein Screenshot erstellt werden soll.

  • screenshot_on_step_failure (boolean) - Ob ein Screenshot erstellt werden soll, nachdem ein Schritt fehlgeschlagen ist.

with_screenshot_on_step_start(screenshot_on_step_start)

Akzeptiert ein boolesches Argument, das angibt, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.

with_screenshot_on_step_success(screenshot_on_step_success)

Akzeptiert ein boolesches Argument, das angibt, ob nach erfolgreichem Abschluss eines Schritts ein Screenshot erstellt werden soll.

with_screenshot_on_step_failure(screenshot_on_step_failure)

Akzeptiert ein boolesches Argument, das angibt, ob nach einem Schritt ein Screenshot erstellt werden soll.

get_screenshot_on_step_start()

Gibt zurück, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.

get_screenshot_on_step_success()

Gibt zurück, ob ein Screenshot erstellt werden soll, nachdem ein Schritt erfolgreich abgeschlossen wurde.

get_screenshot_on_step_failure()

Gibt zurück, ob ein Screenshot erstellt werden soll, nachdem ein Schritt fehlgeschlagen ist.

disable_step_screenshots()

Deaktiviert alle Screenshot-Optionen (get_screenshot_on_step_start, get_screenshot_on_step_success und get_screenshot_on_step_failure).

enable_step_screenshots()

Aktiviert alle Screenshot-Optionen (get_screenshot_on_step_start, get_screenshot_on_step_success und get_screenshot_on_step_failure). Standardmäßig sind alle diese Methoden aktiviert.

SetConfig (Optionen) in Bezug auf Metriken CloudWatch

Für Canarys, die syn-python-selenium-1.1 oder höher verwenden, können die (Optionen) für setConfig die folgenden booleschen Parameter enthalten, die bestimmen, welche Metriken vom Canary veröffentlicht werden. Der Standardwert für jede dieser Optionen ist true. Die Optionen, die mit aggregated beginnen, bestimmen, ob die Metrik ohne die CanaryName-Dimension ausgegeben wird. Sie können diese Metriken verwenden, um die aggregierten Ergebnisse für alle Canarys anzuzeigen. Die anderen Optionen bestimmen, ob die Metrik mit der CanaryName Dimension ausgegeben wird. Sie können diese Metriken verwenden, um die Ergebnisse für jeden einzelnen Canary anzuzeigen.

Eine Liste der von Canaries ausgegebenen CloudWatch Messwerte finden Sie unter. CloudWatch von Canaries veröffentlichte Metriken

  • failed_canary_metric (boolean) – Gibt an, ob die Failed-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • failed_requests_metric (boolean) – Gibt an, ob die Failed requests-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • 2xx_metric (boolean) – Gibt an, ob die 2xx-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • 4xx_metric (boolean) – Gibt an, ob die 4xx-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • 5xx_metric (boolean) – Gibt an, ob die 5xx-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • step_duration_metric (boolean) – Gibt an, ob die Step duration-Metrik (mit der CanaryName-Dimension StepName) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • step_success_metric (boolean) – Gibt an, ob die Step success-Metrik (mit der CanaryName-Dimension StepName) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregated_failed_canary_metric (boolean) – Gibt an, ob die Failed-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregated_failed_requests_metric (boolean) – Gibt an, ob die Failed Requests-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregated_2xx_metric (boolean) – Gibt an, ob die 2xx-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregated_4xx_metric (boolean) – Gibt an, ob die 4xx-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregated_5xx_metric (boolean) – Gibt an, ob die 5xx-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

with_2xx_metric(2xx_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 2xx-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

with_4xx_metric(4xx_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 4xx-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

with_5xx_metric(5xx_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 5xx-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

withAggregated2xxMetric(aggregated2xxMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 2xx-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

withAggregated4xxMetric(aggregated4xxMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 4xx-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

with_aggregated_5xx_metric(aggregated_5xx_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 5xx-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

with_aggregated_failed_canary_metric(aggregated_failed_canary_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Failed-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

with_aggregated_failed_requests_metric(aggregated_failed_requests_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Failed requests-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

with_failed_canary_metric(failed_canary_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Failed-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

with_failed_requests_metric(failed_requests_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Failed requests-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

with_step_duration_metric(step_duration_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Duration-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

with_step_success_metric(step_success_metric)

Akzeptiert ein boolesches Argument, das angibt, ob eine StepSuccess-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

Methoden zum Aktivieren oder Deaktivieren von Metriken

disable_aggregated_request_metrics()

Verhindert, dass der Canary alle Anforderungsmesswerte ausgibt, die ohne CanaryName-Dimension ausgegeben werden.

disable_request_metrics()

Deaktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.

disable_step_metrics()

Deaktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.

enable_aggregated_request_metrics()

Ermöglicht dem Canary, alle Anforderungsmesswerte auszugeben, die ohne CanaryName-Dimension ausgegeben werden.

enable_request_metrics()

Aktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.

enable_step_metrics()

Aktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.

Verwendung in UI-Canarys

Importieren Sie zuerst die Synthetics-Abhängigkeit und holen Sie die Konfiguration ab. Legen Sie dann die Konfiguration für jede Option fest, indem Sie die setConfig-Methode mit einer der folgenden Optionen aufrufen.

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

Oder

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

Um alle Screenshots zu deaktivieren, verwenden Sie die Funktion disableStepScreenshots () wie in diesem Beispiel.

synthetics_configuration.disable_step_screenshots()

Sie können Screenshots jederzeit im Code aktivieren oder deaktivieren. Wenn Sie beispielsweise Screenshots nur für einen Schritt deaktivieren möchten, deaktivieren Sie sie, bevor Sie diesen Schritt ausführen, und aktivieren Sie sie dann nach dem Schritt.

set_config (Optionen) für UI-Canarys

Ab syn-python-selenium-1.1 kann set_config für UI-Canarys folgende boolesche Parameter enthalten:

  • continue_on_step_failure (boolean) - Gibt an, b das Canary-Skript nach einem fehlgeschlagenen Schritt weiter ausgeführt werden soll (dies bezieht sich auf die Funktion executeStep). Wenn Schritte fehlschlagen, wird der Canary-Lauf weiterhin als fehlgeschlagen markiert. Der Standardwert ist false.

SyntheticsLogger Klasse

synthetics_logger schreibt Protokolle auf die Konsole und in eine lokale Protokolldatei auf derselben Protokollebene. Diese Protokolldatei wird nur dann an beide Speicherorte geschrieben, wenn die Protokollebene auf oder unter der gewünschten Protokollierungsebene der aufgerufenen Protokollfunktion liegt.

Den Protokollierungsanweisungen in der lokalen Protokolldatei werden je nach der Protokollebene der aufgerufenen Funktion „DEBUG“ „INFO“ usw. vorangestellt.

Die Verwendung von synthetics_logger ist nicht erforderlich, um eine Protokolldatei zu erstellen, die in Ihren Amazon-S3-Ergebnisspeicherort hochgeladen wird. Sie können stattdessen eine andere Protokolldatei im /tmp-Ordner erstellen. Alle Dateien, die unter dem /tmp-Ordner erstellt wurden, werden als Artefakte an den Ergebnisspeicherort im S3 Bucket hochgeladen.

Verwendung von synthetics_logger:

from aws_synthetics.common import synthetics_logger

Nützliche Funktionsdefinitionen:

Protokollebene abrufen:

log_level = synthetics_logger.get_level()

Protokollebene festlegen:

synthetics_logger.set_level()

Protokollieren Sie eine Nachricht mit einer angegebenen Ebene. Die Ebene kann DEBUG, INFO, WARN oder ERROR sein, wie in den folgenden Syntaxbeispielen:

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)

Informationen zu Debug-Parametern finden Sie in der Python-Standarddokumentation unter logging.debug

In diesen Protokollierungsfunktionen ist das message die Zeichenfolge für das Nachrichtenformat. Die args sind die Argumente, die mit dem Zeichenfolgen-Formatierungsoperator in msg zusammengeführt werden.

Es gibt drei Schlüsselwortargumente in kwargs:

  • exc_info – Wird nicht als false ausgewertet, fügt der Protokollierungsmeldung Ausnahmeinformationen hinzu.

  • stack_info – Standardwert „false“. Bei „true“ werden der Protokollierungsnachricht Stackinformationen hinzugefügt, einschließlich des eigentlichen Protokollierungsaufrufs.

  • extra – Das dritte optionale Schlüsselwortargument, mit dem Sie ein Wörterbuch übergeben können, das verwendet wird, um das __dict__ von LogRecord, das für das Protokollierungsereignis erstellt wurde, mit benutzerdefinierten Attributen aufzufüllen.

Beispiele:

Protokollieren Sie eine Nachricht mit der Ebene DEBUG:

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

Protokollieren Sie eine Nachricht mit der Ebene INFO. logger.log ist ein Synonym für logger.info:

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

or

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

Protokollieren Sie eine Nachricht mit der Ebene WARN:

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

Protokollieren Sie eine Nachricht mit der Ebene ERROR:

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

Protokollieren einer Ausnahme:

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

Protokolliert eine Nachricht mit der Ebene ERROR. Ausnahmeinformationen werden der Protokollierungsmeldung hinzugefügt. Sie sollten diese Funktion nur von einem Exception-Handler aufrufen.

Informationen zu Ausnahmeparametern finden Sie in der Standard-Python-Dokumentation unter Logging.Exception.

Das Format für die Nachricht ist message. Die args sind die Argumente, die mit dem Zeichenfolgen-Formatierungsoperator in msg zusammengeführt werden.

Es gibt drei Schlüsselwortargumente in kwargs:

  • exc_info – Wird nicht als false ausgewertet, fügt der Protokollierungsmeldung Ausnahmeinformationen hinzu.

  • stack_info – Standardwert „false“. Bei „true“ werden der Protokollierungsnachricht Stackinformationen hinzugefügt, einschließlich des eigentlichen Protokollierungsaufrufs.

  • extra – Das dritte optionale Schlüsselwortargument, mit dem Sie ein Wörterbuch übergeben können, das verwendet wird, um das __dict__ von LogRecord, das für das Protokollierungsereignis erstellt wurde, mit benutzerdefinierten Attributen aufzufüllen.

Beispiel:

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

Python- und Selenium-Bibliotheksklassen und Funktionen, die nur für UI-Canarys gelten

Die folgenden CloudWatch Synthetics Selenium-Bibliotheksfunktionen für Python sind nur für UI Canaries nützlich.

SyntheticsBrowser Klasse

Wenn Sie eine Browserinstance durch Aufrufen von synthetics_webdriver.Chrome() erstellen, ist die zurückgegebene Browserinstance vom Typ SyntheticsBrowser. Die SyntheticsBrowser Klasse steuert den Browser und ermöglicht es dem Canary-Skript ChromeDriver, den Browser zu steuern, sodass Selenium WebDriver mit Synthetics arbeiten kann.

Zusätzlich zu den standardmäßigen Selenium-Methoden bietet es auch die folgenden Methoden.

set_viewport_size (Breite, Höhe)

Legt das Ansichtsfenster des Browsers fest. Beispiel:

browser.set_viewport_size(1920, 1080)

save_screenshot (Dateiname, Suffix)

Speichert Screenshots im /tmp-Verzeichnis. Die Screenshots werden von dort in den Ordner Canary-Artefakte im S3 Bucket hochgeladen.

filename ist der Dateiname für den Screenshot und suffix ist eine optionale Zeichenfolge, die zum Benennen des Screenshots verwendet wird.

Beispiel:

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

SyntheticsWebDriver Klasse

Um diese Klasse zu verwenden, verwenden Sie Folgendes in Ihrem Skript:

from aws_synthetics.selenium import synthetics_webdriver

add_execution_error (errorMessage, ex);

errorMessage beschreibt den Fehler und ex ist die aufgetretene Ausnahme

Sie können Folgendes verwenden:add_execution_error, um Ausführungsfehler für Ihren Canary festzulegen. Es lässt den Canary fehlschlagen, ohne die Skriptausführung zu unterbrechen. Es wirkt sich auch nicht auf Ihre successPercent-Metriken aus.

Sie sollten Fehler nur dann als Ausführungsfehler verfolgen, wenn sie nicht wichtig sind, um den Erfolg oder Misserfolg Ihres Canary-Skripts anzuzeigen.

Ein Beispiel für die Verwendung von add_execution_error ist das folgende. Sie überwachen die Verfügbarkeit Ihres Endpunkts und machen Screenshots, nachdem die Seite geladen wurde. Da der Fehler beim Erstellen eines Screenshots die Verfügbarkeit des Endpunkts nicht bestimmt, können Sie beim Erstellen von Screenshots aufgetretene Fehler abfangen und sie als Ausführungsfehler hinzufügen. Ihre Verfügbarkeitsmetriken zeigen weiterhin an, dass der Endpunkt aktiv ist und ausgeführt wird, aber Ihr Canary-Status wird als fehlgeschlagen markiert. Der folgende Codeblock fängt einen solchen Fehler ab und fügt ihn als Ausführungsfehler hinzu.

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)

Hängt den Wert von user_agent_str an den Benutzer-Agent-Header des Browsers an. Sie müssen user_agent_str zuweisen, bevor Sie die Browserinstance erstellen.

Beispiel:

synthetics_webdriver.add_user_agent('MyApp-1.0')

execute_step (step_name, function_to_execute)

Verarbeitet eine Funktion. Folgendes wird ebenfalls bewirkt:

  • Protokolliert, dass der Schritt gestartet wurde.

  • Erfasst einen Screenshot mit dem Namen <stepName>-starting.

  • Startet einen Timer.

  • Führt die bereitgestellte Funktion aus.

  • Wenn die Funktion normal zurückgegeben wird, gilt sie als „bestanden“. Wenn die Funktion scheitert, gilt sie als fehlgeschlagen.

  • Beendet den Timer.

  • Protokolliert, ob der Schritt bestanden oder fehlgeschlagen ist

  • Erfasst einen Screenshot mit dem Namen <stepName>-succeeded oder <stepName>-failed.

  • Gibt die Metrik stepName SuccessPercent aus, wobei „100“ für erfolgreich bzw. „0“ für nicht erfolgreich steht.

  • Gibt die Metrik stepName Duration aus, mit einem Wert basierend auf der Start- und der Endzeit des Schrittes.

  • Gibt schließlich zurück, was die functionToExecute zurückgegeben hat, oder wiederholt einen Throw-Vorgang von functionToExecute.

Beispiel:

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

Startet eine Instance des Chromium-Browsers und gibt die erstellte Instance des Browsers zurück.

Beispiel:

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

Verwenden Sie folgende Parameter, um einen Browser im Inkognito-Modus zu starten:

add_argument('——incognito')

Verwenden Sie folgende Parameter, um Proxy-Einstellungen hinzuzufügen:

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

Beispiel:

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