Я пытаюсь найти некоторые элементы на веб-сайте, если нахожу, мне нужно напечатать check_1 или check_2, а если нет, напечатать никто. Но я застрял в условии if else, поскольку условие if-else не работает. мой код:
try:
if driver.find_element_by_css_selector('div.hero__media'):
sheet.cell(row=i, column=4).value = 'grid'
print('grid')
elif driver.find_elements_by_css_selector('div.flexigrid--no-sublinks.flexigrid--4-2up'):
sheet.cell(row=i, column=4).value = 'banner'
print('banner')
else:
raise Exception('This is the exception you expect to handle')
except Exception as error:
sheet.cell(row=i, column=4).value = 'none'
print('none')
Последнее еще вызывает ручное исключение, поэтому, если я не могу найти элемент, к которому он пойдет, кроме. Изменить 1: я попытался изменить условие с if на if else, теперь снова второе условие не работает, что-то не так с if else. Редактировать1_Код:
if driver.find_element_by_css_selector('div.flexigrid--no-sublinks.flexigrid--4-2up'):
sheet.cell(row=i, column=4).value = 'grid'
print('grid')
elif driver.find_elements_by_css_selector('div.hero__media'):
sheet.cell(row=i, column=4).value = 'banner'
print('banner')
else:
raise Exception('This is the exception you expect to handle')
except Exception as error:
sheet.cell(row=i, column=4).value = 'none'
print('none')```
@NarendraR пробовал, все еще не работает. не принимает если еще условие
Вы имеете в виду, что вы проверяете, присутствует ли флажок на веб-странице?
button =driver.find_element_by_css_selector('div.hero__media') //To check button is present on page if (len(button)>0):Проблема здесь в том, что мой if else не работает, поэтому все, что я вставил, if else не работает. Я переключил условие if с условием if else, и условие if else работало





Попробуйте подсчитать длину и проверьте, работает ли он.
if len(driver.find_elements_by_css_selector('div.hero__media'))>0:
sheet.cell(row=i, column=4).value = 'grid'
print('grid')
elif len(driver.find_elements_by_css_selector('div.flexigrid--no-sublinks.flexigrid--4-2up'))>0:
sheet.cell(row=i, column=4).value = 'banner'
print('banner')
else:
raise Exception('This is the exception you expect to handle')
except Exception as error:
sheet.cell(row=i, column=4).value = 'none'
print('none')```
last else is throwing manual exception so if I can't find the element it will go to except.
Все еще не работает, я не знаю почему, но это не будет условием if else после сбоя в условии if.
Вы можете использовать find_elements, получить размер и проверить, не равен ли он 0:
value = 'none'
if len(driver.find_elements_by_css_selector('div.hero__media')) > 0:
value = 'grid'
elif len(driver.find_elements_by_css_selector('div.flexigrid--no-sublinks.flexigrid--4-2up')) > 0:
value = 'banner'
print(value)
sheet.cell(row=i, column=4).value = value
Проблема в вашем коде в том, что если первый элемент не существует, Selenium выбрасывает NoSuchElementException и пропускает другой код. Упасть на except часть и никогда не ходить на elif.
Вы также можете проверить здесь, как проверить, существует ли элемент.
Зачем мне проверять длину? Я просто хочу знать, присутствует ли элемент (из «селектора CSS») на веб-сайте или нет.
Проверка длины элементов поиска дает вам, сколько элементов существует в DOM, 0 означает, что не существует.
вы можете изменить
driver.find_elements_by_css_selectorнаdriver.find_element_by_css_selectorв состоянииelifи попробовать