

# Selenium을 사용하는 Python canary 스크립트에 사용할 수 있는 라이브러리 함수
<a name="CloudWatch_Synthetics_Canaries_Library_Python"></a>

이 단원에서는 Python canary 스크립트에 사용할 수 있는 Selenium 라이브러리 함수를 설명합니다.

**Topics**
+ [모든 canary에 적용되는 Python 및 Selenium 라이브러리 클래스 및 함수](#CloudWatch_Synthetics_Library_allcanaries_Python)
+ [UI canary에만 적용되는 Python 및 Selenium 라이브러리 클래스 및 함수](#CloudWatch_Synthetics_Library_Python_UIcanaries)

## 모든 canary에 적용되는 Python 및 Selenium 라이브러리 클래스 및 함수
<a name="CloudWatch_Synthetics_Library_allcanaries_Python"></a>

다음 Python용 CloudWatch Synthetics Selenium 라이브러리 함수는 모든 canary에 사용할 수 있습니다.

**Topics**
+ [SyntheticsConfiguration 클래스](#CloudWatch_Synthetics_Library_SyntheticsConfiguration_Python)
+ [SyntheticsLogger 클래스](#CloudWatch_Synthetics_Library_SyntheticsLogger_Python)

### SyntheticsConfiguration 클래스
<a name="CloudWatch_Synthetics_Library_SyntheticsConfiguration_Python"></a>

SyntheticsConfiguration 클래스를 사용하여 Synthetics 라이브러리 함수의 동작을 구성할 수 있습니다. 예를 들어 이 클래스를 사용하여 스크린샷을 캡처하지 않도록 ` executeStep()` 함수를 구성할 수 있습니다.

글로벌 수준에서 CloudWatch Synthetics 구성을 설정할 수 있습니다.

함수 정의:

#### set\$1config(options)
<a name="CloudWatch_Synthetics_Library_setConfig_Python"></a>

```
from aws_synthetics.common import synthetics_configuration
```

` options `는 canary에 대해 구성 가능한 옵션의 집합인 객체입니다. 다음 단원에서는 ` options `의 가능한 필드를 설명합니다.
+ `screenshot_on_step_start`(boolean) - 단계를 시작하기 전에 스크린샷을 생성할지 여부입니다.
+ `screenshot_on_step_success`(boolean) - 성공적인 단계를 완료한 후 스크린샷을 생성할지 여부입니다.
+ `screenshot_on_step_failure`(boolean) - 단계가 실패한 후 스크린샷을 생성할지 여부입니다.

 **with\$1screenshot\$1on\$1step\$1start(screenshot\$1on\$1step\$1start)** 

단계를 시작하기 전에 스크린샷을 생성할지 여부를 나타내는 부울 인수를 허용합니다.

 **with\$1screenshot\$1on\$1step\$1success(screenshot\$1on\$1step\$1success)** 

단계를 성공적으로 완료한 후 스크린샷을 생성할지 여부를 나타내는 부울 인수를 허용합니다.

 **with\$1screenshot\$1on\$1step\$1failure(screenshot\$1on\$1step\$1failure)** 

단계가 실패한 후 스크린샷을 생성할지 여부를 나타내는 부울 인수를 허용합니다.

 **get\$1screenshot\$1on\$1step\$1start()** 

단계를 시작하기 전에 스크린샷을 생성할지 여부를 반환합니다.

 **get\$1screenshot\$1on\$1step\$1success()** 

단계를 성공적으로 완료한 후 스크린샷을 생성할지 여부를 반환합니다.

 **get\$1screenshot\$1on\$1step\$1failure()** 

단계가 실패한 후 스크린샷을 생성할지 여부를 반환합니다.

 **disable\$1step\$1screenshots()** 

모든 스크린샷 옵션(get\$1screenshot\$1on\$1step\$1start, get\$1screenshot\$1on\$1step\$1success, get\$1screenshot\$1on\$1step\$1failure)을 사용 중지합니다.

 **enable\$1step\$1screenshots()** 

모든 스크린샷 옵션(get\$1screenshot\$1on\$1step\$1start, get\$1screenshot\$1on\$1step\$1success, get\$1screenshot\$1on\$1step\$1failure)을 사용하도록 설정합니다. 기본적으로 이러한 메서드는 모두 사용 설정되어 있습니다.

 **CloudWatch 지표에 관한 setConfig(options)** 

`syn-python-selenium-1.1` 이상을 사용하는 카나리의 경우 **setConfig**의 **(options)**에는 카나리에서 게시하는 지표를 결정하는 다음 부울 파라미터가 포함될 수 있습니다. 이러한 각 옵션의 기본값은 `true`입니다. ` aggregated`로 시작하는 옵션은 ` CanaryName` 측정기준 없이 지표를 내보낼지 여부를 결정합니다. 이러한 지표를 사용하여 모든 canary에 대한 집계 결과를 확인할 수 있습니다. 다른 옵션은 `CanaryName` 측정기준과 함께 지표를 내보낼지 여부를 결정합니다. 이러한 지표를 사용하여 각 개별 canary의 결과를 확인할 수 있습니다.

canary에서 내보내는 CloudWatch 지표 목록은 [canary가 게시한 CloudWatch 지표](CloudWatch_Synthetics_Canaries_metrics.md) 단원을 참조하세요.
+ `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\$12xx\$1metric(2xx\$1metric)** 

이 canary에 대한 `CanaryName` 측정기준과 함께 `2xx` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 **with\$14xx\$1metric(4xx\$1metric)** 

이 canary에 대한 `CanaryName` 측정기준과 함께 `4xx` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 **with\$15xx\$1metric(5xx\$1metric)** 

이 canary에 대한 `CanaryName` 측정기준과 함께 `5xx` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 **withAggregated2xxMetric(aggregated2xxMetric)** 

이 canary에 대한 측정기준 없이 `2xx` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 **withAggregated4xxMetric(aggregated4xxMetric)** 

이 canary에 대한 측정기준 없이 `4xx` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 **with\$1aggregated\$15xx\$1metric(aggregated\$15xx\$1metric)** 

이 canary에 대한 측정기준 없이 `5xx` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 ** with\$1aggregated\$1failed\$1canary\$1metric(aggregated\$1failed\$1canary\$1metric)** 

이 canary에 대한 측정기준 없이 `Failed` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 ** with\$1aggregated\$1failed\$1requests\$1metric(aggregated\$1failed\$1requests\$1metric)** 

이 canary에 대한 측정기준 없이 `Failed requests` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 **with\$1failed\$1canary\$1metric(failed\$1canary\$1metric)** 

이 canary에 대한 `CanaryName` 측정기준과 함께 `Failed` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 **with\$1failed\$1requests\$1metric(failed\$1requests\$1metric)** 

이 canary에 대한 `CanaryName` 측정기준과 함께 `Failed requests` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 **with\$1step\$1duration\$1metric(step\$1duration\$1metric)** 

이 canary에 대한 `CanaryName` 측정기준과 함께 `Duration` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

 **with\$1step\$1success\$1metric(step\$1success\$1metric)** 

이 canary에 대한 `CanaryName` 측정기준과 함께 `StepSuccess` 지표를 내보낼지 여부를 지정하는 부울 인수를 허용합니다.

##### 지표를 사용 또는 사용 중지하는 메서드
<a name="CloudWatch_Synthetics_Python_setConfig_metrics"></a>

 **disable\$1aggregated\$1request\$1metrics()** 

canary가 ` CanaryName` 측정기준 없이 내보내지는 모든 요청 지표를 내보내지 못하도록 합니다.

 **disable\$1request\$1metrics()** 

canary별 지표와 모든 canary에서 집계된 지표를 모두 포함하여 모든 요청 지표를 사용 중지합니다.

 **disable\$1step\$1metrics()** 

단계 성공 지표 및 단계 지속 시간 지표 모두를 포함하여 모든 단계 지표를 사용 중지합니다.

 **enable\$1aggregated\$1request\$1metrics()** 

canary가 ` CanaryName` 측정기준 없이 내보내지는 모든 요청 지표를 내보낼 수 있도록 합니다.

 **enable\$1request\$1metrics()** 

canary별 지표와 모든 canary에서 집계된 지표를 모두 포함하여 모든 요청 지표를 사용하도록 설정합니다.

 **enable\$1step\$1metrics()** 

단계 성공 지표 및 단계 지속 시간 지표 모두를 포함하여 모든 단계 지표를 사용 설정합니다.

 **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
```

또는

```
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\$1config(options)
<a name="CloudWatch_Synthetics_Library_Python_UI"></a>

`syn-python-selenium-1.1`을 시작으로 UI canary의 경우 ` set_config`에 다음 부울 파라미터가 포함될 수 있습니다.
+ `continue_on_step_failure`(부울) - 단계가 실패한 후 카나리 스크립트를 계속 실행할지 여부입니다(단계 실패에 대해서는 **executeStep** 함수 참조). 단계가 실패한 경우 canary 실행은 여전히 ​​실패로 표시됩니다. 기본값은 `false`입니다.

### SyntheticsLogger 클래스
<a name="CloudWatch_Synthetics_Library_SyntheticsLogger_Python"></a>

`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.warning(message, *args, **kwargs)
```

```
synthetics_logger.error(message, *args, **kwargs)
```

디버그 파라미터에 대한 자세한 내용은 표준 Python 설명서의 [logging.debug](https://docs.python.org/3/library/logging.html#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.warning('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](https://docs.python.org/3/library/logging.html#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 라이브러리 클래스 및 함수
<a name="CloudWatch_Synthetics_Library_Python_UIcanaries"></a>

다음 Python용 CloudWatch Synthetics Selenium 라이브러리 함수는 UI canary에만 사용할 수 있습니다.

**Topics**
+ [SyntheticsBrowser 클래스](#CloudWatch_Synthetics_Library_Python_SyntheticsBrowser)
+ [SyntheticsWebDriver 클래스](#CloudWatch_Synthetics_Library_Python_SyntheticsWebDriver)

### SyntheticsBrowser 클래스
<a name="CloudWatch_Synthetics_Library_Python_SyntheticsBrowser"></a>

**참고**  
`SyntheticsBrowser`는 Chrome 브라우저에서만 지원됩니다.

`synthetics_webdriver.Chrome()`을 호출하여 브라우저 인스턴스를 생성할 때 반환되는 브라우저 인스턴스는 `SyntheticsBrowser` 유형입니다. ` SyntheticsBrowser` 클래스는 WebDriver 클래스를 상속하고 [WebDriver](https://www.selenium.dev/documentation/webdriver/)가 공개하는 모든 메서드에 대한 액세스를 제공합니다. ChromeDriver를 제어하고 카나리 스크립트가 브라우저를 구동할 수 있도록 하여 Selenium WebDriver가 Synthetics와 함께 작동할 수 있도록 합니다.

**참고**  
Synthetics는 WebDriver [quit](https://www.selenium.dev/selenium/docs/api/py/selenium_webdriver_firefox/selenium.webdriver.firefox.webdriver.html) 메서드를 재정의하여 아무 작업도 수행하지 않습니다. 브라우저 종료에 대해서는 걱정할 필요가 없습니다. Synthetics가 자동으로 처리합니다.

이 클래스는 표준 Selenium 메서드 외에 다음 메서드도 제공합니다.

**Topics**
+ [set\$1viewport\$1size(width, height)](#CloudWatch_Synthetics_Library_set_viewport_size)
+ [save\$1screenshot(filename, suffix)](#CloudWatch_Synthetics_Library_save_screenshot)

#### set\$1viewport\$1size(width, height)
<a name="CloudWatch_Synthetics_Library_set_viewport_size"></a>

브라우저의 뷰포트를 설정합니다. 예제:

```
browser.set_viewport_size(1920, 1080)
```

#### save\$1screenshot(filename, suffix)
<a name="CloudWatch_Synthetics_Library_save_screenshot"></a>

스크린샷을 `/tmp` 디렉터리에 저장합니다. 스크린샷은 이 디렉터리에서 S3 버킷의 canary 아티팩트 폴더로 업로드됩니다.

*filename*은 스크린샷의 파일 이름이며, *suffix*는 스크린샷의 이름을 지정하는 데 사용할 선택적 문자열입니다.

예제:

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

### SyntheticsWebDriver 클래스
<a name="CloudWatch_Synthetics_Library_Python_SyntheticsWebDriver"></a>

이 클래스를 사용하려면 스크립트에서 다음을 사용합니다.

```
from aws_synthetics.selenium import synthetics_webdriver
```

**Topics**
+ [add\$1execution\$1error(errorMessage, ex);](#CloudWatch_Synthetics_Library_Python_addExecutionError)
+ [add\$1user\$1agent(user\$1agent\$1str)](#CloudWatch_Synthetics_Library_add_user_agent)
+ [execute\$1step(step\$1name, function\$1to\$1execute)](#CloudWatch_Synthetics_Library_Python_execute_step)
+ [get\$1http\$1response(url)](#CloudWatch_Synthetics_Library_Python_get_http_response)
+ [Chrome()](#CloudWatch_Synthetics_Library_Python_Chrome)

#### add\$1execution\$1error(errorMessage, ex);
<a name="CloudWatch_Synthetics_Library_Python_addExecutionError"></a>

`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\$1user\$1agent(user\$1agent\$1str)
<a name="CloudWatch_Synthetics_Library_add_user_agent"></a>

브라우저의 사용자 에이전트 헤더에 `user_agent_str` 값을 추가합니다. 브라우저 인스턴스를 생성하기 전에 `user_agent_str`을 할당해야 합니다.

예제:

```
await synthetics_webdriver.add_user_agent('MyApp-1.0')
```

`add_user_agent`는 `async` 함수 내부에서 사용해야 합니다.

#### execute\$1step(step\$1name, function\$1to\$1execute)
<a name="CloudWatch_Synthetics_Library_Python_execute_step"></a>

하나의 함수를 처리합니다. 또한 다음을 수행합니다.
+ 단계가 시작되었음을 기록합니다.
+ 이름이 `<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)
```

#### get\$1http\$1response(url)
<a name="CloudWatch_Synthetics_Library_Python_get_http_response"></a>

제공된 URL에 대해 HTTP 요청을 생성하고 HTTP 요청의 응답 코드를 반환합니다. HTTP 요청 중에 예외가 발생하면 값이 '오류인 문자열이 대신 반환됩니다.

예제:

```
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()
<a name="CloudWatch_Synthetics_Library_Python_Chrome"></a>

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