Как избежать ошибки в функции Selenium click, если нет кнопки

#python #selenium

#python #селен

Вопрос:

Я использую этот код, чтобы нажать на кнопку на странице с selenium:

 document.getElementsByClassName('pv-profile-section__text-truncate-toggle')[0].click()
  

На некоторых страницах есть эта кнопка, а на некоторых нет. Ошибки возникают на страницах, где эта кнопка не существует. Как я могу предотвратить возникновение этой ошибки? Например, условие для проверки, есть ли эта кнопка на странице или нет.

Ответ №1:

Поместите его в блок try:

 try:
    document.getElementsByClassName('pv-profile-section__text-truncate-toggle')[0].click()
except Exception as e:
    error = e
  

Ответ №2:

Вы можете сделать это с NoSuchElementException помощью или проверить, не является ли список, возвращаемый с помощью find_elements_by_class_name , пустым:

 from selenium.common.exceptions import NoSuchElementException

def click_if_exists(class_name: str):
    try:
        driver.find_element_by_class_name(class_name).click()
    except NoSuchElementException:
        print(f'{class_name} element does not exist')
        
click_if_exists('SomeRandomClass')
# SomeRandomClass element does not exist
  
 def click_if_exists(class_name: str):
    found_elements = driver.find_elements_by_class_name(class_name)
    
    if found_elements:
        found_elements[0].click()
    else:
        print(f'{class_name} element does not exist')
        
click_if_exists('SomeRandomClass')
# SomeRandomClass element does not exist