Перейти к содержимому

Фотография

Selenium Python проверка наличия многих элементов на странице + файл

#selenium #python

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 maverick12345

maverick12345

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Неважно Ф.О

Отправлено 31 января 2022 - 09:21

Добрый день

Пишу автоматизацию на Python + Selenium

 

В pytest проверяю тестами наличие/появление элементов на странице через тест-функцию def test_1_...

 

Столкнулся с проблемой, если использовать для каждой проверки try ... except NoSuchElementException:  ... ,то если одна из проверок не пройдет, то весь тест зафейлится, логически это правильно, но я не получаю информации по другим проверяемым объектам на странице, что найдены они на странице или нет.

 

Почитал, что есть библиотека pytest_check (https://pypi.org/project/pytest_check/) которая помогает справиться с моей задачей, но есть еще одно НО - мне нужно каждый Fail описать в отдельном файле, обычный лог, в формате .txt где бы я каждый не найденный объект помечал бы, как текст-ошибку

 

Работаю в связке с Jenkins + Allure Dashboard + Telegram Msg Bot

Но понадобилось еще сделать текстовые ошибки 

 

Стандартный формат с конфигурацией вывода (-rF --no-header --tb=line ) и дальнейшая запись в файл не подходит

 

 

Поэтому прошу у вас помощи

 

1) Как тестом проверить больше 1го элемента на странице

2) Если элемент не найден, то какой самый подходящий способ записать ошибку как текст-лог?

 

Буду признателен любым примерам

Прикрепленные файлы


  • 0

#2 RGremliN

RGremliN

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Долгий Роман
  • Город:Таганрог

Отправлено 04 февраля 2022 - 18:22

Прекрасно работает обычный try: except:
Код внизу например пишет в консольке двжадый NO FOUND.
Оборачиваешь поиск элемента в функцию с таким же try\except и пользуйся на здоровье. 
 

    try:
        searchInput = driver.find_element(By.XPATH, "//*[@id=\"search_form_inut_homepage\"]")
    except:
        print("NO FOUND")

    try:
        buttonSearch = driver.find_element(By.XPATH, "//*[@id=\"search_buttn_homepage\"]")
    except:
        print("NO FOUND")
test_one.py::TestOne::test_one FAILED                                    [100%]
NO FOUND = Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="search_form_inut_homepage"]"}
  (Session info: chrome=97.0.4692.99)


NO FOUND = Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="search_buttn_homepage"]"}
  (Session info: chrome=97.0.4692.99)

  • 0

#3 maverick12345

maverick12345

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Неважно Ф.О

Отправлено 09 февраля 2022 - 17:34

Спасибо сделал через инициацию файла

file = open('test.txt', 'w')

 

Потом каждый тест - это проверка элемента

 

try:

    file = driver.find_element(By=HOW, What)

 

except NoSuchelementExeption:

     file.write('Elem not found')

В Jenkins я после каждого прогода джобы получаю этот файл, через переменную и прикрепляю, если есть ошибки в виде спарсенного текста из файла. Если он пустой то просто удаляю

 

String file = readFile ''test.txt'

if(file.length() < 0){
query_error.delete()
}

TG_MESSAGE = """
Message you want to get\n${file}\nCheck details in Allure: ${BUILD_URL}/allure
"""
}
 
Спасибо @RGremliN

  • 0

#4 maverick12345

maverick12345

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Неважно Ф.О

Отправлено 09 февраля 2022 - 17:37

Код в таком виде

Может кому понадобится

Прикрепленные файлы


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных