На платформе есть еще как минимум 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: 

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

0
Claudaette 13 Окт 2021 в 16:07

2 ответа

Лучший ответ

Вы можете поймать несколько исключений в одном блоке 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
pmadhu 13 Окт 2021 в 15:42

Во втором методе вы ловите только 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
kinshukdua 13 Окт 2021 в 13:13