Middle
Page Object үлгүсү эмне?
sobes.tech AI
AIден жооп
Page Object (PO) үлгісі — бұл автоматташтырылган тестілеу үшін жобалау үлгісі, ол веб-беттерді сыныптар ретінде көрсетеді. Әрбір PO сыныбы элементтер мен әрекеттерді қамтиды, олар пайдаланушы нақты бетте орындайды:
Артықшылықтары:
- Оқылымдылық: Тест коды түсінікті болады, себебі ол беттермен және олардың элементтерімен жоғары деңгейлі әдістер арқылы әрекеттеседі:
- Қолдау: Егер беттегі элементтердің локаторлары өзгерсе, тек сәйкес Page Object сыныбын өзгерту жеткілікті, тесттерді қайта жазудың қажеті жоқ:
- Қайталау қолдану: Page Object әдістері мен элементтері әртүрлі тест сценарияларында қолданылуы мүмкін:
- Жауапкершілікті бөлу: UI элементтерімен әрекет ету логикасы тест сценарийінің логикасынан бөлінген:
Негізгі компоненттері:
- Беттер сыныптары: нақты веб-беттің абстракциясы.
- Веб-элементтер: бет сыныбында локаторлар (XPath, CSS-селекторлар, ID және т.б.) пайдаланып анықталады.
- Әдістер: бетте орындалатын әрекеттерді көрсетеді (мысалы,
login(),addToCart(),search()). Бұл әдістер веб-элементтермен әрекеттеседі:
Үлгі құрылым:
# login_page.py
from selenium.webdriver.common.by import By
class LoginPage:
def __init__(self, driver):
self.driver = driver
self.username_input = (By.ID, "username") # Пайдаланушы аты өрісінің локаторы
self.password_input = (By.ID, "password") # Құпия сөз өрісінің локаторы
self.login_button = (By.XPATH, "//button[contains(text(), 'Login')]") # Кіру батырмасының локаторы
self.error_message = (By.CSS_SELECTOR, ".error-message") # Қате туралы хабарламаның локаторы
def open(self, url):
self.driver.get(url) # Бетті ашады
def enter_credentials(self, username, password):
self.driver.find_element(*self.username_input).send_keys(username) # Пайдаланушы атын енгізеді
self.driver.find_element(*self.password_input).send_keys(password) # Құпия сөзді енгізеді
def click_login_button(self):
self.driver.find_element(*self.login_button).click() # Батырманы басады
def get_error_message(self):
return self.driver.find_element(*self.error_message).text # Қате туралы хабарламаның мәтінін алады
# test_login.py
import unittest
from selenium import webdriver
from login_page import LoginPage # Page Object сыныбын импорттау
class LoginTests(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome() # Драйверді инициализациялау
self.login_page = LoginPage(self.driver) # Page Object мысалы
def tearDown(self):
self.driver.quit() # Драйверді жабу
def test_valid_login(self):
self.login_page.open("http://example.com/login") # Бетті ашу
self.login_page.enter_credentials("valid_user", "valid_password") # Мәліметтерді енгізу
self.login_page.click_login_button() # Батырманы басу
# Сәтті кіруді қосымша тексерулермен толықтырыңыз
def test_invalid_login(self):
self.login_page.open("http://example.com/login") # Бетті ашу
self.login_page.enter_credentials("invalid_user", "wrong_password") # Мәліметтерді енгізу
self.login_page.click_login_button() # Батырманы басу
error_text = self.login_page.get_error_message() # Қате туралы хабарламаны алу
self.assertIn("Неверные учетные данные", error_text) # Хабарламаны тексеру
if __name__ == "__main__":
unittest.main()
Бұл мысалда LoginPage — кіру бетінің Page Object-і. test_login.py тесттері осы сыныптың әдістерін пайдаланады, элементтермен әрекеттесу бөлшектерін жасырады:
Page Object үлгісі — автоматтандырылған веб-интерфейс тестілеудің стандартты үлгісі, оның артықшылықтары — қолдау және оқылымдылық үшін.