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 ტესტები იყენებენ ამ კლასის მეთოდებს, რათა abstraction-ით დაიფაროს ელემენტებთან ურთიერთქმედების დეტალები:
Page Object ნიმუში — ეს არის ავტომატიზებული ვებ-ინტერფეის ტესტირების სტანდარტული ნიმუში, რომელიც თავისი უპირატესობებით არის პოპულარული შენარჩუნებისა და კითხულობის თვალსაზრისით।