PythonのPOデザインパターン

ページオブジェクト (PO) デザインパターンはテストオートメーションで使われているデザインパターンで、テストコードからページオブジェクトを分離することで、コードのメンテナンス性と可読性を向上させます。PO デザインパターンでは、ページのさまざまな要素を、ページまたはページの一部を表す独立したオブジェクトにカプセル化して、ページとインタラクションするための特定のメソッドとプロパティを提供します。Python で PO デザインパターンを使用するには、以下の手順に従います。1. すべてのページオブジェクトの親クラスとして `BasePage` という名前の基底クラスを作成します。このクラスは、ページのロード、要素の検索、要素の可視化までの待機などの一般的なメソッドを含める必要があります。“`pythonfrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECclass BasePage:
def __init__(self, driver):
self.driver = driver
def load_page(self, url):
self.driver.get(url)
def find_element(self, locator):
return self.driver.find_element(*locator)
def wait_for_element_visible(self, locator, timeout=10):
wait = WebDriverWait(self.driver, timeout)
return wait.until(EC.visibility_of_element_located(locator))“`2. ページオブジェクトクラスを作成し、各ページオブジェクトクラスを、ページまたはページの一部を表します。ページオブジェクトクラスは `BasePage` クラスを継承する必要があり、ページに関連するメソッドとプロパティを含める必要があります。“`pythonclass LoginPage(BasePage):
# ページ要素のロケータを定義します
username_locator = (By.ID, ‘username’)
password_locator = (By.ID, ‘password’)
login_button_locator = (By.ID, ‘login-button’)
def enter_username(self, username):
username_element = self.wait_for_element_visible(self.username_locator)
username_element.send_keys(username)
def enter_password(self, password):
password_element = self.wait_for_element_visible(self.password_locator)
password_element.send_keys(password)
def click_login_button(self):
login_button_element = self.wait_for_element_visible(self.login_button_locator)
login_button_element.click()“`3. テストコードでページオブジェクトクラスを使用してテスト操作を実行します。“`pythondriver = webdriver.Chrome()login_page = LoginPage(driver)login_page.load_page(‘http://example.com/login’)login_page.enter_username(‘testuser’)login_page.enter_password(‘password’)login_page.click_login_button()“`PO デザインパターンを使用すると、テストコードを簡潔かつ可読にすることができます。また、ページが変更されても、テストコードを変更することなく、ページオブジェクトクラスのロケータを変更するだけで済みます。これにより、コードの保守性が向上し、保守コストを削減できます。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds