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
Themen
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
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.options
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 Kanarienvögel, die syn-python-selenium-1.1
oder später verwenden, setConfigkönnen die (Optionen) für die folgenden booleschen Parameter enthalten, die bestimmen, welche Metriken vom Kanarienvogel 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 dieFailed
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.failed_requests_metric
(boolean) – Gibt an, ob dieFailed requests
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.2xx_metric
(boolean) – Gibt an, ob die2xx
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.4xx_metric
(boolean) – Gibt an, ob die4xx
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.5xx_metric
(boolean) – Gibt an, ob die5xx
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.step_duration_metric
(boolean) – Gibt an, ob dieStep duration
-Metrik (mit derCanaryName
-DimensionStepName
) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.step_success_metric
(boolean) – Gibt an, ob dieStep success
-Metrik (mit derCanaryName
-DimensionStepName
) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregated_failed_canary_metric
(boolean) – Gibt an, ob dieFailed
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregated_failed_requests_metric
(boolean) – Gibt an, ob dieFailed Requests
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregated_2xx_metric
(boolean) – Gibt an, ob die2xx
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregated_4xx_metric
(boolean) – Gibt an, ob die4xx
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregated_5xx_metric
(boolean) – Gibt an, ob die5xx
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.
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.
withAggregated2 xxMetric (aggregiert xxMetric 2)
Akzeptiert ein boolesches Argument, das angibt, ob eine 2xx
-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.
withAggregated4 xxMetric (aggregiert 4) xxMetric
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) — Ob mit der Ausführung des Canary-Skripts fortgefahren werden soll, nachdem ein Schritt fehlgeschlagen ist (dies bezieht sich auf die executeStepFunktion). Wenn Schritte fehlschlagen, wird der Canary-Lauf weiterhin als fehlgeschlagen markiert. Der Standardwert istfalse
.
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 Protokollanweisungen in der lokalen Protokolldatei werden "DEBUG: „,"INFO: „usw. vorangestellt, um der Protokollebene der aufgerufenen Funktion zu entsprechen.
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__
vonLogRecord
, 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__
vonLogRecord
, 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 (, ex); errorMessage
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 vonfunctionToExecute
.
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)