Код-ревью Middle Page Object и архитектура обновлено
Ревью: Page Object корзины
Вопрос
Найдите проблемы в Page Object.
class CartPage(BasePage):
def __init__(self, driver):
super().__init__(driver)
self.items = driver.find_elements(By.CSS_SELECTOR, ".cart-item")
self.checkout_btn = driver.find_element(By.XPATH, "/html/body/div/div[2]/button")
def click_button_2(self):
time.sleep(2)
self.checkout_btn.click()
def remove_first(self):
self.items[0].find_element(By.CSS_SELECTOR, ".remove").click()
assert len(self.driver.find_elements(By.CSS_SELECTOR, ".cart-item")) == len(self.items) - 1
Коротко
Хороший вариант: локаторы в полях класса, элементы ищутся при обращении, метод checkout() ждёт кликабельности и возвращает CheckoutPage, removeitem(name) удаляет конкретную позицию, а тест сам ждёт и проверяет количество.
Что должен найти ревьюер
- Ошибкастрока 4Элементы ищутся в конструкторе: после изменения корзины ссылки протухнут, а если корзина ещё грузится, список будет пустым
- Ошибкастрока 5Абсолютный XPath
- Стильстрока 7Имя метода описывает технику, а не действие пользователя (checkout)
- Ошибкастрока 8sleep внутри Page Object
- Стильстрока 9Переход к оформлению не возвращает объект следующей страницы
- Ошибкастрока 13Проверка внутри действия и без ожидания: метод нельзя использовать в других сценариях, а сразу после клика список ещё не обновился
Разбор
Хороший вариант: локаторы в полях класса, элементы ищутся при обращении, метод checkout() ждёт кликабельности и возвращает CheckoutPage, remove_item(name) удаляет конкретную позицию, а тест сам ждёт и проверяет количество.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.