Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Получение текста из нотификации (Selenium + Python)



Software-Testing.Ru - портал тестировщиков  

Новые темы форума тестировщиков


Получение текста из нотификации (Selenium + Python)
2018-10-30 13:59

При создании пользователя у нас есть ряд валидаций на вводимые данные - часть из них происходит на фронтенде, часть - осуществляется бэкендом. Фронтовая валидация отмечает поля красными и пишет под ними текст ошибки, а бэковая отправляет всплывающую нотификацию с текстом ошибки, которая исчезает через несколько секунд. Скриншот нотификации прикладываю.

Когда я пишу автотесты на вылавливание текста ошибок, код выглядит так (мы используем 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

И эта ошибка повторяется на всех последующих тестах, где мне надо получить текст нотификации.

Есть ли какие-то советы по тому, как это пофиксить?

Прикрепленные изображения

  • Notification.png
  • Err text.png
  • Magic.png


Тестирование регистрации и авторизации
2018-10-30 14:21

Здравствуйте. Хочу реализовать проверку регистрации и авторизации пользователя на сайте. Для этого написал два теста, один на регистрацию, а второй, соответственно, на авторизацию. Причем, планирую использовать тест в нескольких браузерах и часто прогонять его. 

Для регистрации использую скрипт, который копирует рандомную почту с одно сайта и вставляет это значение куда надо. 
 

driver.get("https://www.mailinator.com/");
String mail = driver.findElement(By.xpath("/html/body/section[1]/div/div[3]/div[2]/div[2]/div[2]/h4[3]/span/a")).getText();

И ввожу его
 

 WebElement reg_mail = driver.findElement(By.name("REGISTER[LOGIN]"));
 reg_mail.sendKeys(mail);

Но возникла проблема с реализацией авторизации через только что зарегистрированную почту, так как второй тест не видит эту переменную с почтой. 

Подскажите, как бы можно было это реализовать? 
Ибо если повторно зайти на страницу то будет уже новая почта. Да и тесты не должны быть независимы друг от друга (если по правильному). 


UPD: Да, забыл добавить что использую Selenium web driver + java + testNG + log4j



31 октября состоится онлайн-финал Serial Hacking October
2018-10-30 14:25

31 октября в 19:00 состоится фееричный онлайн-финал Serial Hacking October в формате онлайн-трансляции. 
Serial Hacking October – это четыре независимых хакатона от CryptoBazar Fund, крупнейшего в России и странах СНГ венчурного инвестора в блокчейн-индустрии: Serial Hacking september, Serial Hacking october, Serial Hacking november и Serial Hacking december. 
Участвовать и претендовать на победу можно в одном, нескольких или сразу во всех из них https://goo.gl/kckBv5 ☝️
????Призовой фонд октябрьского хакатона составляет 1 200 000 рублей. 
????Организатор-крупнейший инвестиционный фонд и блокчейн сообщество - CryptoBazar Fund, а также Fantom, и партнеры QuarkChain, NuCypher, ANKR, LINO. 
Заходи к нам на трансляцию и узнай кто отправится в Гонконг, а также сколько денег получит главнй финалист



Как принимать аргументы командной строки для pytest
2018-10-30 15:06

Есть необходимость для теста передавать аргументы в командной строке, в таком виде:

pytest  testfile.py parameter1 parameter2 parameter3

ну и в скрипте testfile.py использовать эти параметры.

 

Как я понимаю sys.argv тут уже не поможет. Прошу совета.



Что захватить, отправляясь на охоту за багами
2018-10-30 15:21

Автор: Джоэл Монтвелиски (Joel Montvelisky)

Оригинал статьи

Перевод: Ольга Алифанова

 

Баг-хантинг – распространенная практика в мировых тест-организациях. Однако некоторые тест-менеджеры думают, что баг-хантинг – это поиск багов на границах через неформальные эксперименты с приложением.

Что такое баг-хантинг (и чем он не является)?

Баг-хантинг – это неформальные упражнения по тестированию. Не надо путать их с ситуацией, когда вы развлекаетесь с приложением без цели и смысла, а также не смешивайте их с исследовательским тестированием. Вот почему:

  • Баг-хантинг – это групповая деятельность, а исследовательское тестирование может проводиться единолично.
  • Цель баг-хантинга – подключить к процессу тех, кто не является тестировщиком, и найти неочевидные баги. Исследовательское тестирование нацелено на "обычные" баги, и им обычно занимаются исключительно тестировщики.
  • Исследовательским тестированием можно заниматься на любой стадии процесса разработки. Баг-хантинг приносит пользу, если приложение достаточно стабильно.
Читать статью полностью...

 



© 2010 | Software-Testing.Ru


В избранное