Продолжайте сценарий, если элемент не найден

#python #android #selenium #exception #appium

Вопрос:

На платформе есть еще по крайней мере 2 вопроса, но ни один из их ответов мне не помог.

Я только что импортировал:

 from selenium.common.exceptions import NoSuchElementException   

затем используется:

 if Newest_tab_button:  print('element found') else:  print('not found')  

или

 try:  wait = WebDriverWait(driver, 15)  Newest_tab_button = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@text="NEWEST"]//ancestor::*[contains(@resource-id, "itemContainer")]'))) except NoSuchElementException:  print('Element not found')  

Ничего не получалось, все равно получилось:

 selenium.common.exceptions.TimeoutException: Message:   

Кто-нибудь может мне с этим помочь? Заранее спасибо.

Ответ №1:

Вы можете перехватывать несколько исключений в одном except блоке или с несколькими except блоками

 try:  wait = WebDriverWait(driver, 15)  Newest_tab_button = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@text="NEWEST"]//ancestor::*[contains(@resource-id, "itemContainer")]'))) except TimeoutException as e:  print("TimeoutException")   except NoSuchElementException as e1:  print("NoSuchElementException")   except Exception as e3: # To catch an Exception other than the specified once.  print(e3)  

Или вам нужно поместить все исключения в кортеж:

 except (TimeoutException,NoSuchElementException): # This catches either TimeoutException or NoSuchElementException  print("ERROR")   

Комментарии:

1. Первый метод работает как заклинание. Спасибо!!!

Ответ №2:

Во втором методе вы только ловите NoSuchElementException , но проблема в том , что ваш сценарий истекает, и вы получаете TimeoutException , вам просто нужно поймать и это, чтобы продолжить сценарий

 from selenium.common.exceptions import NoSuchElementException, TimeoutException  try:  wait = WebDriverWait(driver, 15)  Newest_tab_button = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@text="NEWEST"]//ancestor::*[contains(@resource-id, "itemContainer")]'))) except (NoSuchElementException, TimeoutException) as error:  print(error) # Continue with the script  

Комментарии:

1. Привет, Спасибо за попытку помочь, я получил: Python версии 3.7 не поддерживает этот синтаксис и синтаксическую ошибку: недопустимый синтаксис

2. @Claudaette Я пропустил скобки, код должен быть исправлен сейчас.