Fungsi pustaka tersedia untuk skrip canary Python yang menggunakan Selenium - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Fungsi pustaka tersedia untuk skrip canary Python yang menggunakan Selenium

Bagian ini mencantumkan fungsi pustaka Selenium yang tersedia untuk skrip canary Python.

Kelas dan fungsi pustaka Python dan Selenium yang berlaku untuk semua canary

Fungsi perpustakaan CloudWatch Synthetics Selenium berikut untuk Python berguna untuk semua burung kenari.

SyntheticsConfiguration kelas

Anda dapat menggunakan SyntheticsConfiguration kelas untuk mengkonfigurasi perilaku fungsi perpustakaan Synthetics. Misalnya, Anda dapat menggunakan kelas ini untuk mengonfigurasi fungsi executeStep() untuk tidak menangkap tangkapan layar.

Anda dapat mengatur konfigurasi CloudWatch Synthetics di tingkat global.

Definisi fungsi:

set_config(options)

from aws_synthetics.common import synthetics_configuration

options adalah sebuah objek, yang merupakan kumpulan opsi yang dapat dikonfigurasi untuk canary Anda. Bagian berikut menjelaskan bidang-bidang yang memungkinkan dalam options.

  • screenshot_on_step_start (boolean)— Apakah mengambil tangkapan layar sebelum memulai langkah.

  • screenshot_on_step_success (boolean)— Apakah mengambil tangkapan layar setelah menyelesaikan langkah yang berhasil.

  • screenshot_on_step_failure (boolean)— Apakah mengambil tangkapan layar setelah langkah gagal.

with_screenshot_on_step_start(screenshot_on_step_start)

Menerima argumen Boolean, yang menunjukkan apakah akan mengambil tangkapan layar sebelum memulai sebuah langkah.

with_screenshot_on_step_success(screenshot_on_step_success)

Menerima argumen Boolean, yang menunjukkan apakah akan mengambil tangkapan layar setelah menyelesaikan langkah dengan sukses.

with_screenshot_on_step_failure(screenshot_on_step_failure)

Menerima argumen Boolean, yang menunjukkan apakah akan mengambil tangkapan layar setelah langkah gagal.

get_screenshot_on_step_start()

Mengembalikan apakah mengambil tangkapan layar sebelum memulai langkah.

get_screenshot_on_step_success()

Mengembalikan apakah mengambil tangkapan layar setelah menyelesaikan sebuah langkah dengan sukses.

get_screenshot_on_step_failure()

Mengembalikan apakah mengambil tangkapan layar setelah langkah gagal.

disable_step_screenshots()

Menonaktifkan semua pilihan tangkapan layar (get_screenshot_on_step_start, get_screenshot_on_step_success, dan get_screenshot_on_step_failure)

enable_step_screenshots()

Mengaktifkan semua pilihan tangkapan layar (get_screenshot_on_step_start, get_screenshot_on_step_success, dan get_screenshot_on_step_failure). Secara bawaan, semua metode ini diaktifkan.

setConfig (opsi) mengenai metrik CloudWatch

Untuk canary yang menggunakan syn-python-selenium-1.1 atau yang lebih baru, (options) untuk setConfig dapat mencakup parameter Boolean berikut yang menentukan metrik mana yang diterbitkan oleh canary. Bawaan untuk masing-masing opsi ini adalah true. Pilihan yang dimulai dengan aggregated menentukan apakah metrik dipancarkan tanpa dimensi CanaryName. Anda dapat menggunakan metrik ini untuk melihat hasil gabungan untuk semua canary Anda. Pilihan lain menentukan apakah metrik dipancarkan dengan dimensi CanaryName. Anda dapat menggunakan metrik ini untuk melihat hasil untuk setiap canary individu.

Untuk daftar CloudWatch metrik yang dipancarkan oleh burung kenari, lihat. CloudWatch metrik yang diterbitkan oleh kenari

  • failed_canary_metric (boolean)— Apakah akan memancarkan metrik Failed (dengan dimensi CanaryName) untuk canary ini. Default-nya adalah true.

  • failed_requests_metric (boolean)— Apakah akan memancarkan metrik Failed requests (dengan dimensi CanaryName) untuk canary ini. Default-nya adalah true.

  • 2xx_metric (boolean)— Apakah akan memancarkan metrik 2xx (dengan dimensi CanaryName) untuk canary ini. Default-nya adalah true.

  • 4xx_metric (boolean)— Apakah akan memancarkan metrik 4xx (dengan dimensi CanaryName) untuk canary ini. Default-nya adalah true.

  • 5xx_metric (boolean)— Apakah akan memancarkan metrik 5xx (dengan dimensi CanaryName) untuk canary ini. Default-nya adalah true.

  • step_duration_metric (boolean)— Apakah akan memancarkan metrik Step duration (dengan dimensi CanaryName StepName) untuk canary ini. Default-nya adalah true.

  • step_success_metric (boolean)— Apakah akan memancarkan metrik Step success (dengan dimensi CanaryName StepName) untuk canary ini. Default-nya adalah true.

  • aggregated_failed_canary_metric (boolean)— Apakah akan memancarkan metrik Failed (tanpa dimensi CanaryName) untuk canary ini. Bawaannya adalah true.

  • aggregated_failed_requests_metric (boolean)— Apakah akan memancarkan metrik Failed Requests (tanpa dimensi CanaryName) untuk canary ini. Bawaannya adalah true.

  • aggregated_2xx_metric (boolean)— Apakah akan memancarkan metrik 2xx (tanpa dimensi CanaryName) untuk canary ini. Bawaannya adalah true.

  • aggregated_4xx_metric (boolean)— Apakah akan memancarkan metrik 4xx (tanpa dimensi CanaryName) untuk canary ini. Bawaannya adalah true.

  • aggregated_5xx_metric (boolean)— Apakah akan memancarkan metrik 5xx (tanpa dimensi CanaryName) untuk canary ini. Bawaannya adalah true.

with_2xx_metric(2xx_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik 2xx dengan dimensi CanaryName untuk canary ini.

with_4xx_metric(4xx_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik 4xx dengan dimensi CanaryName untuk canary ini.

with_5xx_metric(5xx_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik 5xx dengan dimensi CanaryName untuk canary ini.

withAggregated2xxMetric(aggregated2xxMetric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik 2xx tanpa dimensi untuk canary ini.

withAggregated4xxMetric(aggregated4xxMetric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik 4xx tanpa dimensi untuk canary ini.

with_aggregated_5xx_metric(aggregated_5xx_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik 5xx tanpa dimensi untuk canary ini.

with_aggregated_failed_canary_metric(aggregated_failed_canary_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik Failed tanpa dimensi untuk canary ini.

with_aggregated_failed_requests_metric(aggregated_failed_requests_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik Failed requests tanpa dimensi untuk canary ini.

with_failed_canary_metric(failed_canary_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik Failed dengan dimensi CanaryName untuk canary ini.

with_failed_requests_metric(failed_requests_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik Failed requests dengan dimensi CanaryName untuk canary ini.

with_step_duration_metric(step_duration_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik Duration dengan dimensi CanaryName untuk canary ini.

with_step_success_metric(step_success_metric)

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik StepSuccess dengan dimensi CanaryName untuk canary ini.

Metode untuk mengaktifkan atau menonaktifkan metrik

disable_aggregated_request_metrics()

Menonaktifkan canary dari memancarkan semua metrik permintaan yang dipancarkan tanpa dimensi CanaryName.

disable_request_metrics()

Menonaktifkan semua metrik permintaan, termasuk metrik per canary dan metrik yang dikumpulkan di semua canary.

disable_step_metrics()

Menonaktifkan semua metrik langkah, termasuk metrik langkah sukses dan metrik durasi langkah.

enable_aggregated_request_metrics()

Mengaktifkan canary untuk memancarkan semua metrik permintaan yang dipancarkan tanpa dimensi CanaryName.

enable_request_metrics()

Mengaktifkan semua metrik permintaan, termasuk metrik per canary dan metrik yang dikumpulkan di semua canary.

enable_step_metrics()

Mengaktifkan semua metrik langkah, termasuk metrik keberhasilan langkah dan metrik durasi langkah.

Penggunaan di canary UI

Pertama, impor dependensi synthetics dan ambil konfigurasinya. Lalu, atur konfigurasi untuk setiap pilihan dengan memanggil metode setConfig menggunakan salah satu pilihan berikut.

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

Atau

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

Untuk menonaktifkan semua tangkapan layar, gunakan fungsi disableStepScreenshots () seperti pada contoh ini.

synthetics_configuration.disable_step_screenshots()

Anda dapat mengaktifkan dan menonaktifkan tangkapan layar kapan saja di kode tersebut. Misalnya, untuk menonaktifkan tangkapan layar hanya untuk satu langkah, nonaktifkan sebelum menjalankan langkah tersebut dan kemudian aktifkan setelah langkah.

set_config(options) untuk canary UI

Dimulai dengan syn-python-selenium-1.1, untuk canary UI, set_config dapat mencakup parameter Boolean berikut:

  • continue_on_step_failure (boolean)— Apakah akan melanjutkan menjalankan skrip canary setelah langkah gagal (ini mengacu pada fungsi executeStep). Jika ada langkah yang gagal, proses canary akan tetap ditandai sebagai gagal. Bawaannya adalah false.

SyntheticsLogger kelas

synthetics_logger menulis log keluar ke konsol dan ke file log lokal pada tingkat log yang sama. File log ini ditulis ke kedua lokasi hanya jika tingkat log berada pada atau di bawah tingkat log yang diinginkan dari fungsi log yang dipanggil tersebut.

Pernyataan pembuatan log di file log lokal diawali dengan "DEBUG: ", "INFO: ", dan seterusnya untuk mencocokkan tingkat log dari fungsi yang dipanggil tersebut.

Menggunakan synthetics_logger tidak diperlukan untuk membuat file log yang diunggah ke lokasi hasil Amazon S3 Anda. Sebagai penggantinya, Anda dapat membuat file log lain di /tmp folder. File apa pun yang dibuat di bawah folder /tmp diunggah ke lokasi hasil dalam bucket S3 sebagai artefak.

Untuk menggunakan synthetics_logger:

from aws_synthetics.common import synthetics_logger

Definisi fungsi yang berguna:

Dapatkan tingkat log:

log_level = synthetics_logger.get_level()

Atur tingkat log:

synthetics_logger.set_level()

Buat log sebuah pesan dengan tingkat tertentu. Tingkat dapat DEBUG, INFO, WARN, atau ERROR, seperti dalam contoh sintaks berikut:

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)

Untuk informasi tentang parameter debug, silakan lihat dokumentasi Python standar di logging.debug

Dalam fungsi pembuatan log ini, message adalah string format pesan. args adalah argumen yang digabung menjadi msg menggunakan operator pemformatan string.

Ada tiga argumen kata kunci di kwargs:

  • exc_info– Jika tidak dievaluasi sebagai false, tambahkan informasi pengecualian ke pesan pembuatan log.

  • stack_info– default ke false. Jika true, tambahkan informasi tumpukan ke pesan pembuatan log, termasuk panggilan pembuatan log yang sebenarnya.

  • extra– Argumen kata kunci opsional ketiga, yang dapat Anda gunakan untuk meneruskan kamus yang digunakan untuk mengisi __dict__ dari LogRecord yang dibuat untuk peristiwa pembuatan log dengan atribut yang ditentukan pengguna.

Contoh:

Buat log pesan dengan tingkat DEBUG:

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

Buat log pesan dengan tingkat INFO. logger.log adalah sinonim untuk logger.info:

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

atau

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

Buat log pesan dengan tingkat WARN:

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

Buat log pesan dengan tingkat ERROR:

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

Buat log pengecualian:

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

Membuat log pesan dengan tingkat ERROR. Informasi pengecualian ditambahkan ke pesan pembuatan log. Anda harus memanggil fungsi ini hanya dari handler pengecualian.

Untuk informasi tentang parameter pengecualian, silakan lihat dokumentasi Python standar di logging.exception

message adalah string format pesan. args adalah argumen, yang digabungkan menjadi msg menggunakan operator pemformatan string.

Ada tiga argumen kata kunci di kwargs:

  • exc_info– Jika tidak dievaluasi sebagai false, tambahkan informasi pengecualian ke pesan pembuatan log.

  • stack_info– default ke false. Jika true, tambahkan informasi tumpukan ke pesan pembuatan log, termasuk panggilan pembuatan log yang sebenarnya.

  • extra– Argumen kata kunci opsional ketiga, yang dapat Anda gunakan untuk meneruskan kamus yang digunakan untuk mengisi __dict__ dari LogRecord yang dibuat untuk peristiwa pembuatan log dengan atribut yang ditentukan pengguna.

Contoh:

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

Kelas dan fungsi pustaka Python dan Selenium yang hanya berlaku untuk canary UI

Fungsi perpustakaan CloudWatch Synthetics Selenium berikut untuk Python hanya berguna untuk kenari UI.

SyntheticsBrowser kelas

Ketika Anda membuat instans browser dengan memanggil synthetics_webdriver.Chrome(), instans browser yang dikembalikan bertipe SyntheticsBrowser. SyntheticsBrowserKelas mengontrol ChromeDriver, dan memungkinkan skrip kenari untuk menggerakkan browser, memungkinkan Selenium WebDriver bekerja dengan Synthetics.

Selain metode Selenium standar, itu juga menyediakan metode berikut.

set_viewport_size(width, height)

Mengatur viewport browser. Contoh:

browser.set_viewport_size(1920, 1080)

save_screenshot(filename, suffix)

Menyimpan tangkapan layar ke direktori /tmp. Tangkapan layar diunggah dari sana ke folder artefak canary di dalam bucket S3.

filename adalah nama file untuk tangkapan layar, dan suffix adalah string opsional untuk digunakan guna menamai tangkapan layar.

Contoh:

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

SyntheticsWebDriver kelas

Untuk menggunakan kelas ini, gunakan yang berikut ini dalam skrip Anda:

from aws_synthetics.selenium import synthetics_webdriver

add_execution_error(errorMessage, ex);

errorMessage menjelaskan kesalahan dan ex adalah pengecualian yang ditemui

Anda dapat menggunakan add_execution_error untuk mengatur kesalahan eksekusi bagi canary Anda. Itu menggagalkan canary tanpa mengganggu eksekusi skrip. Itu juga tidak memengaruhi metrik successPercent Anda.

Anda harus melacak kesalahan sebagai kesalahan eksekusi hanya jika kesalahan itu tidak penting untuk menunjukkan keberhasilan atau kegagalan skrip canary Anda.

Contoh penggunaan add_execution_error adalah sebagai berikut. Anda memantau ketersediaan titik akhir Anda dan mengambil tangkapan layar setelah halaman dimuat. Karena kegagalan mengambil tangkapan layar tidak menentukan ketersediaan titik akhir, Anda dapat menangkap kesalahan apa pun yang dihadapi saat mengambil tangkapan layar dan menambahkannya sebagai kesalahan eksekusi. Metrik ketersediaan Anda masih akan menunjukkan bahwa titik akhir telah aktif dan berjalan, namun status canary Anda akan ditandai sebagai gagal. Blok kode sampel berikut menangkap kesalahan tersebut dan menambahkannya sebagai kesalahan eksekusi.

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)

Menambahkan nilai dari user_agent_str ke header agen pengguna browser. Anda harus menetapkan user_agent_str sebelum membuat instans browser.

Contoh:

synthetics_webdriver.add_user_agent('MyApp-1.0')

execute_step(step_name, function_to_execute)

Memproses satu fungsi. Ini juga melakukan hal berikut:

  • Membuat log bahwa langkah tersebut dimulai.

  • Mengambil tangkapan layar yang bernama <stepName>-starting.

  • Memulai pengatur waktu.

  • Menjalankan fungsi yang disediakan.

  • Jika fungsi kembali secara normal, ini dihitung sebagai lulus. Jika fungsi tersebut throw, maka ini dihitung sebagai gagal.

  • Mengakhiri pengatur waktu.

  • Mencatat log jika langkah berhasil atau gagal

  • Mengambil tangkapan layar yang bernama <stepName>-succeeded atau <stepName>-failed.

  • Memancarkan metrik stepName SuccessPercent, 100 untuk lulus atau 0 untuk gagal.

  • Memancarkan metrik stepName Duration, dengan nilai didasarkan pada mulai melangkah dan waktu selesai.

  • Akhirnya, mengembalikan apa yang dikembalikan oleh functionToExecute atau melempar kembali apa yang dilempar oleh functionToExecute.

Contoh:

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

Membuat permintaan HTTP ke URL yang disediakan dan mengembalikan kode respons permintaan HTTP. Jika pengecualian terjadi selama permintaan HTTP, string dengan nilai “kesalahan” dikembalikan sebagai gantinya.

Contoh:

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

Meluncurkan sebuah instans dari browser Chromium dan mengembalikan instans yang dibuat dari browser.

Contoh:

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

Untuk meluncurkan browser dalam mode penyamaran, gunakan yang berikut ini:

add_argument('——incognito')

Untuk menambahkan pengaturan proxy, gunakan yang berikut ini:

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

Contoh:

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