可用于使用硒的 Python 金丝雀脚本的库函数 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

可用于使用硒的 Python 金丝雀脚本的库函数

本节列出了可用于 Python 金丝雀脚本的硒库函数。

适用于所有金丝雀的 Python 和硒库类和函数

以下 CloudWatch Synthetics 硒库函数适用于所有 Canary。

Synthetics 配置类

您可以使用 “Synthetics 配置” 类来配置 “合成” 库函数的行为。例如,您可以使用此类配置executeStep()函数来捕获屏幕截图。

您可以在全局级别设置 CloudWatch Synthetics 器配置。

函数定义:

设置配置(选项)

from aws_synthetics.common import synthetics_configuration

options是一个对象,它是一组适用于您的金丝雀的可配置选项。以下各部分将介绍options

  • screenshot_on_step_start(布尔值)— 是否在开始步骤之前拍摄屏幕截图。

  • screenshot_on_step_success(布尔值)— 是否在成功完成步骤后拍摄屏幕截图。

  • screenshot_on_step_failure(布尔值)— 是否在步骤失败后拍摄屏幕截图。

与屏幕截图 _ 开始 _ 步骤 _ 开始 (屏幕截图 _ 上 _ 步骤 _ 开始)

接受布尔参数,该参数指示是否在开始步骤之前拍摄屏幕截图。

与 _ 屏幕截图 _ 步骤 _ 成功 (屏幕截图 _ 上 _ 步骤 _ 成功)

接受布尔参数,该参数指示是否在成功完成步骤后拍摄屏幕截图。

带有屏幕截图 _ 步骤 _ 失败 (屏幕快照 _ 步骤 _ 失败)

接受布尔参数,该参数指示是否在步骤失败后拍摄屏幕截图。

获取屏幕截图 _ 步骤 _ 开始 ()

返回是否在开始步骤之前拍摄屏幕截图。

获取屏幕截图 _ 步骤 _ 成功 ()

返回是否在成功完成步骤后拍摄屏幕截图。

获取屏幕截图 _ 步骤 _ 失败 ()

返回是否在步骤失败后拍摄屏幕截图。

禁用步骤屏幕截图 ()

禁用所有屏幕截图选项(取得屏幕截图 _ 步骤 _ 开始 _ 开始 _ 屏幕截图 _ 步骤 _ 成功 _ 成功,以及获取 _ 屏幕截图 _ 步骤 _ 失败)。

启用步骤屏幕截图 ()

启用所有屏幕截图选项(取得屏幕截图 _ 步骤 _ 开始 _、取得 _ 屏幕截图 _ 步骤 _ 成功 _ 成功和获取 _ 屏幕截图 _ 步骤 _ 失败)。默认情况下,所有这些方法都处于启用状态。

用户界面金丝雀

首先,导入合成依赖关系并获取配置。然后,通过使用以下选项之一调用 setConfig 方法来设置每个选项的配置。

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

Or

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

要禁用所有屏幕截图,请使用禁用步骤屏幕截图 () 功能,如本示例所示。

synthetics_configuration.disable_step_screenshots()

您可以在代码中的任何位置启用和禁用屏幕截图。例如,要仅禁用一个步骤的屏幕截图,请在运行该步骤之前禁用屏幕截图,然后在步骤后启用它们。

SyntheticsLogger 类

synthetics_logger将注销写入控制台和同一日志级别的本地日志文件。仅当日志级别与所调用的日志函数所需的日志记录级别相同或比其级别低时,此日志文件才会写入到这两个位置。

本地日志文件中的日志记录语句前缀为 “DEBUG: ”、“INFO:” 等,以便与所调用的函数的日志级别相匹配。

使用synthetics_logger无需创建日志文件,该日志文件上传到您的 Amazon S3 结果位置。您可以在 /tmp 文件夹中创建不同的日志文件。任何在/tmp文件夹作为构件上传到 S3 存储桶中的结果位置。

使用synthetics_logger

from aws_synthetics.common import synthetics_logger

有用的函数定义:

获取日志级别:

log_level = synthetics_logger.get_level()

设置日志级别:

synthetics_logger.set_level()

使用指定级别记录消息。该级别可以是DEBUGINFOWARN,或者ERROR,如下面的语法示例所示:

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)

有关调试参数的信息,请参阅记录 .debug

在这些日志记录函数中,message是消息格式字符串。这些区域有:args是合并到msg使用字符串格式运算符。

有三个关键字参数kwargs

  • exc_info— 如果未评估为 false,则会将异常信息添加到日志记录消息中。

  • stack_info— 默认为 false。如果为 true,则将堆栈信息添加到日志记录消息中,包括实际的日志记录调用。

  • extra— 第三个可选关键字参数,您可以使用该参数传入用于填充__dict__LogRecord为具有用户定义属性的日志记录事件创建。

示例:

使用级别记录消息DEBUG

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

使用级别记录消息INFOlogger.log是一个代名词logger.info

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

或者

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

使用级别记录消息WARN

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

使用级别记录消息ERROR

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

记录例外:

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

使用级别记录消息ERROR。异常信息将添加到日志记录消息中。您应该只从异常处理程序调用此函数。

有关异常参数的信息,请参阅记录。异常

这些区域有:message是消息格式字符串。这些区域有:args是参数,它们被合并到msg使用字符串格式运算符。

有三个关键字参数kwargs

  • exc_info— 如果未评估为 false,则会将异常信息添加到日志记录消息中。

  • stack_info— 默认为 false。如果为 true,则将堆栈信息添加到日志记录消息中,包括实际的日志记录调用。

  • extra— 第三个可选关键字参数,您可以使用该参数传入用于填充__dict__LogRecord为具有用户定义属性的日志记录事件创建。

例如:

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

仅适用于 UI 金丝雀的 Python 和硒库类和函数

以下 CloudWatch Synthetics 硒库函数适用于 Python 仅适用于 UI Canary。

合成浏览器类

当您通过调用synthetics_webdriver.Chrome(),则返回的浏览器实例的类型为SyntheticsBrowser。这些区域有:SyntheticsBrowser类控制 ChromeDriver,并使金丝雀脚本能够驱动浏览器,从而允许硒 WebDriver 与 Synthetics 材料一起工作。

除了标准的硒方法之外,它还提供了以下方法。

设置视图大小(宽度、高度)

设置浏览器的视区。例如:

browser.set_viewport_size(1920, 1080)

保存屏幕截图(文件名,后缀)

将屏幕截图保存到/tmp目录。屏幕截图将从那里上传到 S3 存储桶中的金丝雀工件文件夹。

filename是屏幕截图的文件名,后缀是用于命名屏幕截图的可选字符串。

例如:

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

合成 Web 驱动程序类

要使用此类,请在脚本中使用以下内容:

from aws_synthetics.selenium import synthetics_webdriver

添加执行错误(errorMessage,例如);

errorMessage描述错误,ex是遇到的异常

您可以使用add_execution_error来设置你的金丝雀的执行错误。它在不中断脚本执行的情况下使金丝雀失败。它也不会影响successPercent指标。

只有当错误对于指示金丝雀脚本的成功或失败并不重要时,才应将错误作为执行错误进行跟踪。

使用的一个示例add_execution_error如下所示。您正在监控终端节点的可用性,并在页面加载后截取屏幕截图。由于截取屏幕截图失败并不决定终端节点的可用性,因此您可以捕获截图时遇到的任何错误,并将其添加为执行错误。您的可用性指标仍将指示终端节点已启动并正在运行,但您的 Canary 状态将被标记为失败。以下示例代码块捕获这样的错误并将其添加为执行错误。

try: browser.save_screenshot("loaded.png") except Exception as ex: self.add_execution_error("Unable to take screenshot", ex)

添加用户代理(用户代理)

追加user_agent_str添加到浏览器的用户代理头。您必须分配user_agent_str创建浏览器实例之前。

例如:

synthetics_webdriver.add_user_agent('MyApp-1.0')

执行步骤(步骤名称,函数到执行)

处理一个功能。它还执行以下操作:

  • 记录步骤开始。

  • 获取名为 <stepName>-starting 的屏幕截图。

  • 启动计时器。

  • 执行提供的函数。

  • 如果函数正常返回,则计为通过。如果函数引发异常,则计为失败。

  • 结束计时器。

  • 记录步骤是通过还是失败

  • 获取名为 <stepName>-succeeded<stepName>-failed 的屏幕截图。

  • 发出 stepName SuccessPercent 指标,100 表示通过,0 表示失败。

  • 发出 stepName Duration 指标,指标的值基于步骤开始和结束时间。

  • 最后,返回 functionToExecute 返回的内容或重新抛出 functionToExecute 抛出的内容。

例如:

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

启动 Chromium 浏览器的实例并返回创建的浏览器实例。

例如:

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