Не получается обработать исключение NoSuchElementException Selenium
Большую часть времени код работает стабильно, но иногда выдает ошибку NoSuchElementException, не смотря на то, что эта ошибка обрабатывается в блоке except. Я приложу к этому вопросу только часть кода, но она будет отражать суть ошибки. Он может обрабатывать от нескольких десятков до нескольких сотен строчек из документа, но эта ошибка все равно иногда возникает. Кто сталкивался с подобным и что делать в такой ситуации?
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome()
def plac():
with open('bd.txt', 'r') as file:
for line in file:
driver.get(line)
try:
def calc():
try:
driver.implicitly_wait(10)
cheap_item = driver.find_element(By.XPATH, "XPATH1").text #<-ошибка
except NoSuchElementException:
cheap_item = driver.find_element(By.XPATH, 'XPATH2').text
if cheap_item[0].isalpha():
return
else:
pass
calc()
except NoSuchElementException:
driver.refresh()
driver.implicitly_wait(2)
calc()
Код ошибки:
cheap_item = driver.find_element(By.XPATH, "XPATH1"
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:
Ответы (1 шт):
Автор решения: freezy
→ Ссылка
Проблему удалось решить убрав except, который обновляет страницы в случае необходимости
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium import webdriver
driver = webdriver.Chrome()
def plac():
with open('bd.txt', 'r') as file:
for line in file:
driver.get(line)
def calc():
driver.implicitly_wait(1)
try:
refresh = driver.find_element(By.XPATH, '//*[@id="searchResultsTable"]/div').text.strip()
while len(refresh) == 74:
print('Refresh the page...')
driver.refresh()
driver.implicitly_wait(2)
refresh = driver.find_element(By.XPATH, '//*[@id="searchResultsTable"]/div').text.strip()
except NoSuchElementException:
pass
try:
driver.implicitly_wait(10)
cheap_item = driver.find_element(By.XPATH, "XPATH1").text
except NoSuchElementException:
cheap_item = driver.find_element(By.XPATH, 'XPATH2').text
if cheap_item[0].isalpha():
return
else:
pass
calc()
plac()