При создании пользователя у нас есть ряд валидаций на вводимые данные - часть из них происходит на фронтенде, часть - осуществляется бэкендом. Фронтовая валидация отмечает поля красными и пишет под ними текст ошибки, а бэковая отправляет всплывающую нотификацию с текстом ошибки, которая исчезает через несколько секунд. Скриншот нотификации прикладываю.
Когда я пишу автотесты на вылавливание текста ошибок, код выглядит так (мы используем PageObject):
Локатор текста из нотификации (я пробовала и class_name, и другие варианты селекторов):
ITEM_ERROR = (By.CSS_SELECTOR, ".el-form-item__error")
Метод класса:
def get_notification_text(self): element = self.driver.find_element(*BaseLocators.NOTIFICATION_TEXT).text return element
Поиск текста ошибки на странице и сравнение с тем, каким он должен быть:
error = users_page.get_notification_text() assert error == "Email is already in use"
Когда я дебажу этот кусочек кода (PyCharm IDE, встроенная питоновская консоль), порядок действий таков: открываю нужную страницу в экземпляре драйвера (chrome/gecko), заполняю ее данными для срабатывания нужной нотификации, в консоли заведомо вбиваю код:
err = driver.find_element_by_css_selector(".el-form-item__error").text
После чего быстренько нажимаю кнопку "создать пользователя" и отправляю код выше на исполнение в консоли чтобы он сработал в момент появления нотификации. Получаю вроде как успех: скриншот 2. После чего я уже непосредственно запускаю прогон тестов, и тут начинается магия. Ставлю breakpoint в IDE для отладки ассертов, и вижу вот что: assert error == "Email is already in use" прошла успешно, тест зеленый, а в следующем тесте с точно таким же кодом (только err заменен на msg), но другим текстом нотификации результат таков: скриншот 3.
На нем видно, что в msg ничего не сохранилось, текста ошибки нет.
Итоговая ошибка теста:
> assert msg == "User was created successfully" E AssertionError: assert '' == 'User was created successfully' E + User was created successfully test_users.py:91: AssertionError
И эта ошибка повторяется на всех последующих тестах, где мне надо получить текст нотификации.
Есть ли какие-то советы по тому, как это пофиксить?