Selenium을 사용하는 Python canary 스크립트에 사용할 수 있는 라이브러리 함수
이 단원에서는 Python canary 스크립트에 사용할 수 있는 Selenium 라이브러리 함수를 설명합니다.
모든 canary에 적용되는 Python 및 Selenium 라이브러리 클래스 및 함수
다음 Python용 CloudWatch Synthetics Selenium 라이브러리 함수는 모든 canary에 사용할 수 있습니다.
SyntheticsConfiguration 클래스
SyntheticsConfiguration 클래스를 사용하여 Synthetics 라이브러리 함수의 동작을 구성할 수 있습니다. 예를 들어 이 클래스를 사용하여 스크린샷을 캡처하지 않도록 executeStep()
함수를 구성할 수 있습니다.
글로벌 수준에서 CloudWatch Synthetics 구성을 설정할 수 있습니다.
함수 정의:
set_config(options)
from aws_synthetics.common import synthetics_configuration
는 canary에 대해 구성 가능한 옵션의 집합인 객체입니다. 다음 단원에서는 options
의 가능한 필드를 설명합니다.options
screenshot_on_step_start
(boolean) - 단계를 시작하기 전에 스크린샷을 생성할지 여부입니다.screenshot_on_step_success
(boolean) - 성공적인 단계를 완료한 후 스크린샷을 생성할지 여부입니다.screenshot_on_step_failure
(boolean) - 단계가 실패한 후 스크린샷을 생성할지 여부입니다.
with_screenshot_on_step_start(screenshot_on_step_start)
단계를 시작하기 전에 스크린샷을 생성할지 여부를 나타내는 부울 인수를 허용합니다.
with_screenshot_on_step_success(screenshot_on_step_success)
단계를 성공적으로 완료한 후 스크린샷을 생성할지 여부를 나타내는 부울 인수를 허용합니다.
with_screenshot_on_step_failure(screenshot_on_step_failure)
단계가 실패한 후 스크린샷을 생성할지 여부를 나타내는 부울 인수를 허용합니다.
get_screenshot_on_step_start()
단계를 시작하기 전에 스크린샷을 생성할지 여부를 반환합니다.
get_screenshot_on_step_success()
단계를 성공적으로 완료한 후 스크린샷을 생성할지 여부를 반환합니다.
get_screenshot_on_step_failure()
단계가 실패한 후 스크린샷을 생성할지 여부를 반환합니다.
disable_step_screenshots()
모든 스크린샷 옵션(get_screenshot_on_step_start, get_screenshot_on_step_success, get_screenshot_on_step_failure)을 사용 중지합니다.
enable_step_screenshots()
모든 스크린샷 옵션(get_screenshot_on_step_start, get_screenshot_on_step_success, get_screenshot_on_step_failure)을 사용하도록 설정합니다. 기본적으로 이러한 메서드는 모두 사용 설정되어 있습니다.
CloudWatch 지표에 관한 setConfig(options)
syn-python-selenium-1.1
이상을 사용하는 canary의 경우 setConfig의 (options)에는 canary에서 게시하는 지표를 결정하는 다음 부울 파라미터가 포함될 수 있습니다. 이러한 각 옵션의 기본값은 true
입니다. aggregated
로 시작하는 옵션은 CanaryName
측정기준 없이 지표를 내보낼지 여부를 결정합니다. 이러한 지표를 사용하여 모든 canary에 대한 집계 결과를 확인할 수 있습니다. 다른 옵션은 CanaryName
측정기준과 함께 지표를 내보낼지 여부를 결정합니다. 이러한 지표를 사용하여 각 개별 canary의 결과를 확인할 수 있습니다.
canary에서 내보내는 CloudWatch 지표 목록은 canary가 게시한 CloudWatch 지표 단원을 참조하세요.
failed_canary_metric
(boolean) - 이 canary에 대한Failed
지표를 (CanaryName
측정기준과 함께) 내보낼지 여부입니다. 기본값은true
입니다.failed_requests_metric
(boolean) - 이 canary에 대한Failed requests
지표를 (CanaryName
측정기준과 함께) 내보낼지 여부입니다. 기본값은true
입니다.2xx_metric
(boolean) - 이 canary에 대한2xx
지표를 (CanaryName
측정기준과 함께) 내보낼지 여부입니다. 기본값은true
입니다.4xx_metric
(boolean) - 이 canary에 대한4xx
지표를 (CanaryName
측정기준과 함께) 내보낼지 여부입니다. 기본값은true
입니다.5xx_metric
(boolean) - 이 canary에 대한5xx
지표를 (CanaryName
측정기준과 함께) 내보낼지 여부입니다. 기본값은true
입니다.step_duration_metric
(boolean) - 이 canary에 대한Step duration
지표를 (CanaryName
StepName
측정기준과 함께) 내보낼지 여부입니다. 기본값은true
입니다.step_success_metric
(boolean) - 이 canary에 대한Step success
지표를 (CanaryName
StepName
측정기준과 함께) 내보낼지 여부입니다. 기본값은true
입니다.aggregated_failed_canary_metric
(boolean) - 이 canary에 대한Failed
지표를 (CanaryName
측정기준 없이) 내보낼지 여부입니다. 기본값은true
입니다.aggregated_failed_requests_metric
(boolean) - 이 canary에 대한Failed Requests
지표를 (CanaryName
측정기준 없이) 내보낼지 여부입니다. 기본값은true
입니다.aggregated_2xx_metric
(boolean) - 이 canary에 대한2xx
지표를 (CanaryName
측정기준 없이) 내보낼지 여부입니다. 기본값은true
입니다.aggregated_4xx_metric
(boolean) - 이 canary에 대한4xx
지표를 (CanaryName
측정기준 없이) 내보낼지 여부입니다. 기본값은true
입니다.aggregated_5xx_metric
(boolean) - 이 canary에 대한5xx
지표를 (CanaryName
측정기준 없이) 내보낼지 여부입니다. 기본값은true
입니다.
with_2xx_metric(2xx_metric)
이 canary에 대한 CanaryName
측정기준과 함께 2xx
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
with_4xx_metric(4xx_metric)
이 canary에 대한 CanaryName
측정기준과 함께 4xx
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
with_5xx_metric(5xx_metric)
이 canary에 대한 CanaryName
측정기준과 함께 5xx
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
withAggregated2xxMetric(aggregated2xxMetric)
이 canary에 대한 측정기준 없이 2xx
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
withAggregated4xxMetric(aggregated4xxMetric)
이 canary에 대한 측정기준 없이 4xx
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
with_aggregated_5xx_metric(aggregated_5xx_metric)
이 canary에 대한 측정기준 없이 5xx
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
with_aggregated_failed_canary_metric(aggregated_failed_canary_metric)
이 canary에 대한 측정기준 없이 Failed
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
with_aggregated_failed_requests_metric(aggregated_failed_requests_metric)
이 canary에 대한 측정기준 없이 Failed
requests
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
with_failed_canary_metric(failed_canary_metric)
이 canary에 대한 CanaryName
측정기준과 함께 Failed
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
with_failed_requests_metric(failed_requests_metric)
이 canary에 대한 CanaryName
측정기준과 함께 Failed
requests
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
with_step_duration_metric(step_duration_metric)
이 canary에 대한 CanaryName
측정기준과 함께 Duration
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
with_step_success_metric(step_success_metric)
이 canary에 대한 CanaryName
측정기준과 함께 StepSuccess
지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.
지표를 사용 또는 사용 중지하는 메서드
disable_aggregated_request_metrics()
canary가 CanaryName
측정기준 없이 내보내지는 모든 요청 지표를 내보내지 못하도록 합니다.
disable_request_metrics()
canary별 지표와 모든 canary에서 집계된 지표를 모두 포함하여 모든 요청 지표를 사용 중지합니다.
disable_step_metrics()
단계 성공 지표 및 단계 지속 시간 지표 모두를 포함하여 모든 단계 지표를 사용 중지합니다.
enable_aggregated_request_metrics()
canary가 CanaryName
측정기준 없이 내보내지는 모든 요청 지표를 내보낼 수 있도록 합니다.
enable_request_metrics()
canary별 지표와 모든 canary에서 집계된 지표를 모두 포함하여 모든 요청 지표를 사용하도록 설정합니다.
enable_step_metrics()
단계 성공 지표 및 단계 지속 시간 지표 모두를 포함하여 모든 단계 지표를 사용 설정합니다.
UI canary의 사용
먼저, Synthetics 종속 항목을 가져오고 구성을 가져옵니다. 다음으로, 다음 옵션 중 하나를 사용하여 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)
모든 스크린샷을 사용 중지하려면 이 예와 같이 disableStepScreenshots() 함수를 사용합니다.
synthetics_configuration.disable_step_screenshots()
코드의 어느 지점에서든 스크린샷을 사용 및 사용 중지할 수 있습니다. 예를 들어 한 단계에 대해서만 스크린샷을 사용 중지하려면 해당 단계를 실행하기 전에 스크린샷을 사용 중지한 다음, 이 단계가 끝나면 스크린샷을 사용하도록 설정합니다.
UI canary에 대한 set_config(options)
syn-python-selenium-1.1
을 시작으로 UI canary의 경우 set_config
에 다음 부울 파라미터가 포함될 수 있습니다.
continue_on_step_failure
(boolean) - 단계가 실패한 후 canary 스크립트를 계속 실행할지 여부입니다(단계 실패에 대해서는 executeStep 함수 참조). 단계가 실패한 경우 canary 실행은 여전히 실패로 표시됩니다. 기본값은false
입니다.
SyntheticsLogger 클래스
synthetics_logger
는 동일한 로그 수준에서 콘솔과 로컬 로그 파일 모두에 로그를 작성합니다. 이 로그 파일은 로그 수준이 호출된 로그 함수의 원하는 로깅 수준 이하인 경우에만 두 위치에 기록됩니다.
로컬 로그 파일의 로깅 문 앞에는 호출된 함수의 로그 수준과 일치하도록 “DEBUG: “, “INFO: “등이 추가됩니다.
Amazon S3 결과 위치에 업로드되는 로그 파일을 생성할 때는 synthetics_logger
를 사용할 필요가 없습니다. 대신 /tmp
폴더에 다른 로그 파일을 생성할 수 있습니다. /tmp
폴더 아래에 생성된 파일은 S3 버킷의 결과 위치에 아티팩트로 업로드됩니다.
synthetics_logger
를 사용하려면
from aws_synthetics.common import synthetics_logger
유용한 함수 정의:
로그 수준 가져오기:
log_level = synthetics_logger.get_level()
로그 수준 설정:
synthetics_logger.set_level()
지정된 수준의 메시지를 로그합니다. 수준은 다음 구문 예와 같이 DEBUG
, INFO
, WARN
또는 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)
디버그 파라미터에 대한 자세한 내용은 표준 Python 설명서의 logging.debug
이러한 로깅 함수에서 message
는 메시지 형식 문자열입니다. args
는 문자열 형식 지정 연산자를 사용하여 msg
에 병합되는 인수입니다.
kwargs
에는 다음과 같은 세 가지 키워드 인수가 있습니다.
exc_info
- false로 평가되지 않은 경우 예외 정보를 로깅 메시지에 추가합니다.stack_info
- 기본값은 false입니다. true인 경우 실제 로깅 호출을 포함하여 스택 정보를 로깅 메시지에 추가합니다.extra
- 사용자 정의 속성으로 로깅 이벤트에 대해 생성된LogRecord
의__dict__
를 채우는 데 사용되는 사전을 전달하는 데 사용할 수 있는 세 번째 선택적 키워드 인수입니다.
예:
DEBUG
수준의 메시지 로그:
synthetics_logger.debug('Starting step - login.')
INFO
수준의 메시지 로그(logger.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
수준의 메시지를 로그합니다. 예외 정보가 로깅 메시지에 추가됩니다. 예외 핸들러에서만 이 함수를 호출해야 합니다.
예외 파라미터에 대한 자세한 내용은 표준 Python 설명서의 logging.exception
message
는 메시지 형식 문자열입니다. args
는 문자열 형식 지정 연산자를 사용하여 msg
에 병합되는 인수입니다.
kwargs
에는 다음과 같은 세 가지 키워드 인수가 있습니다.
exc_info
- false로 평가되지 않은 경우 예외 정보를 로깅 메시지에 추가합니다.stack_info
- 기본값은 false입니다. true인 경우 실제 로깅 호출을 포함하여 스택 정보를 로깅 메시지에 추가합니다.extra
- 사용자 정의 속성으로 로깅 이벤트에 대해 생성된LogRecord
의__dict__
를 채우는 데 사용되는 사전을 전달하는 데 사용할 수 있는 세 번째 선택적 키워드 인수입니다.
예시
synthetics_logger.exception('Error encountered trying to publish %s', 'CloudWatch Metric')
UI canary에만 적용되는 Python 및 Selenium 라이브러리 클래스 및 함수
다음 Python용 CloudWatch Synthetics Selenium 라이브러리 함수는 UI canary에만 사용할 수 있습니다.
SyntheticsBrowser 클래스
synthetics_webdriver.Chrome()
을 호출하여 브라우저 인스턴스를 생성할 때 반환되는 브라우저 인스턴스는 SyntheticsBrowser
유형입니다. SyntheticsBrowser
클래스는 ChromeDriver를 제어하고 canary 스크립트가 브라우저를 구동할 수 있도록 하여 Selenium WebDriver가 Synthetics와 함께 작동할 수 있도록 합니다.
이 클래스는 표준 Selenium 메서드 외에 다음 메서드도 제공합니다.
set_viewport_size(width, height)
브라우저의 뷰포트를 설정합니다. 예시
browser.set_viewport_size(1920, 1080)
save_screenshot(filename, suffix)
스크린샷을 /tmp
디렉터리에 저장합니다. 스크린샷은 이 디렉터리에서 S3 버킷의 canary 아티팩트 폴더로 업로드됩니다.
filename은 스크린샷의 파일 이름이며, suffix는 스크린샷의 이름을 지정하는 데 사용할 선택적 문자열입니다.
예시
browser.save_screenshot('loaded.png', 'page1')
SyntheticsWebDriver 클래스
이 클래스를 사용하려면 스크립트에서 다음을 사용합니다.
from aws_synthetics.selenium import synthetics_webdriver
add_execution_error(errorMessage, ex);
errorMessage
는 오류를 설명하며, ex
는 발생한 예외입니다.
add_execution_error
를 사용하여 canary에 대한 실행 오류를 설정할 수 있습니다. 이 함수는 스크립트 실행을 중단하지 않고 canary에 실패합니다. 또한 successPercent
지표에 영향을 주지 않습니다.
오류가 canary 스크립트의 성공 또는 실패를 나타내는 데 중요하지 않은 경우에만 오류를 실행 오류로 추적해야 합니다.
add_execution_error
의 사용 예는 다음과 같습니다. 엔드포인트의 가용성을 모니터링하고 페이지가 로드된 후에 스크린샷을 생성합니다. 스크린샷 캡처 실패가 엔드포인트의 가용성을 결정하지 않기 때문에 스크린샷을 생성하는 동안 발생한 오류를 포착하여 실행 오류로 추가할 수 있습니다. 가용성 지표는 여전히 엔드포인트가 실행 중임을 나타내지만 canary 상태는 실패로 표시됩니다. 다음 샘플 코드 블록은 이러한 오류를 포착하여 실행 오류로 추가합니다.
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)
브라우저의 사용자 에이전트 헤더에 user_agent_str
값을 추가합니다. 브라우저 인스턴스를 생성하기 전에 user_agent_str
을 할당해야 합니다.
예시
synthetics_webdriver.add_user_agent('MyApp-1.0')
execute_step(step_name, function_to_execute)
하나의 함수를 처리합니다. 또한 다음을 수행합니다.
단계가 시작되었음을 기록합니다.
이름이
<stepName>-starting
인 스크린샷을 캡처합니다.타이머를 시작합니다.
제공된 함수를 실행합니다.
함수가 값을 정상적으로 반환하면 성공한 것으로 간주됩니다. 함수가 오류를 생성하면 실패한 것으로 간주됩니다.
타이머를 종료합니다.
단계 성공 또는 실패 여부를 기록합니다.
이름이
<stepName>-succeeded
또는<stepName>-failed
인 스크린샷을 캡처합니다.stepName
SuccessPercent
지표(성공 시 100, 실패 시 0)를 내보냅니다.단계 시작 및 종료 시간 기준의 값을 사용하여
stepName
Duration
지표를 내보냅니다.마지막으로,
functionToExecute
에서 반환된 값을 반환하고functionToExecute
에서 생성된 오류를 다시 생성합니다.
예시
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()
Chromium 브라우저의 인스턴스를 시작하고 브라우저의 생성된 인스턴스를 반환합니다.
예시
browser = synthetics_webdriver.Chrome() browser.get("https://example.com/)
시크릿 모드로 브라우저를 시작하려면 다음을 사용하세요.
add_argument('——incognito')
프록시 설정을 추가하려면 다음을 사용하세요.
add_argument('--proxy-server=%s' %
PROXY
)
예시
from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("——incognito") browser = syn_webdriver.Chrome(chrome_options=chrome_options)