t.me/atinfo_chat Telegram группа по автоматизации тестирования

Использование assert для отлова ошибок при работе с элементами страницы

Теги: #<Tag:0x00007f9afed67810> #<Tag:0x00007f9afed676f8>

Здравствуйте есть такая проблема пытаюсь отлавливать ошибку через assert, которая должна возникать в том случае, если элемент не найден или по каким либо другим причинам недоступен.
#Пытаюсь реализовать так

   assert(wait = WebDriverWait(driver, 30).until(
    EC.presence_of_element_located((By.XPATH, //*[@id='content']/*//a[.='Получить услугу'])))), "no element"

Так срабатывает, но как раз не так как нужно, а когда находит элемент и на этом месте прерывает программу.
Подскажите пожалуйста как реализовать обратный случай, если этот элемент не найден падать и выдавать ошибку?

Может подойдёт через try - except? Типа:

try:
    wait...
except NoSuchElementException:
    print ("element not found!")

Поставить в начале знак !
Если полностью оставить вашу реализацию, то:

assert(!(wait = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.XPATH, //[@id=‘content’]///a[.=‘Получить услугу’])))), “no element”))

Через try и except делал слишком много кода лишнего получается, хотел через assert научиться работать.

Вроде всё так красиво и просто, но увы не работает такая реализация(

    try:
        form_xpath = '//span[@class="link__text ng-binding"]'
        wait_file_xpath(driver, form_xpath)
        wait_and_click_xpath(driver, '//span[@class="link__text ng-binding"]')
    except Exception:
        print('Заявление с таким номером не найдено в СИР')

Вам не нужно выдумывать, что-то свое. Достаточно почитать доки про Ассерты. Можете полистать Ассерты разных библиотек: JUnit, Java Hamcrest, AssertJ, Truth. Выбирайте на ваш вкус и цвет. :slight_smile:

Спасибо большое. в java немного не то.