Я надеюсь, что вы закрываете драйвер в конце этого кода также, если не возникает никаких исключений.
Если вы хотите начать с начала цикла при возникновении исключения, вы можете добавить continue
, как предлагалось в других ответах:
try:
CategoryName=driver.find_element_by_xpath('//h1[@class="categoryL3"]|//h1[@class="categoryL4"]').text #finds either L3 or L4 catagory
except NoSuchElementException:
driver.close()
continue # jumps at the beginning of the for loop
, поскольку я не знаю ваш код, следующий совет может оказаться бесполезным, но распространенным способом решения этих случаев является предложение try/except/finally
:
for row in mysql_cats :
print ('Here is the url -', row[1])
cat_url=(row[1])
driver = webdriver.Chrome()
driver.get(cat_url); #Download the URL passed from mysql
try:
# my code, with dangerous stuff
except NoSuchElementException:
# handling of 'NoSuchElementException'. no need to 'continue'
except SomeOtherUglyException:
# handling of 'SomeOtherUglyException'
finally: # Code that is ALWAYS executed, with or without exceptions
driver.close()
Я также предполагаю, что вы каждый раз по какой-то причине создаете новые драйверы.Если это не является добровольным, вы можете использовать что-то вроде этого:
driver = webdriver.Chrome()
for row in mysql_cats :
print ('Here is the url -', row[1])
cat_url=(row[1])
driver.get(cat_url); #Download the URL passed from mysql
try:
# my code, with dangerous stuff
except NoSuchElementException:
# handling of 'NoSuchElementException'. no need to 'continue'
except SomeOtherUglyException:
# handling of 'SomeOtherUglyException'
driver.close()
Таким образом, у вас есть только один драйвер, который управляет всеми страницами, которые вы пытаетесь открыть в цикле for
посмотрите где-нибудь о том, как try/except/finally
действительно полезен при работе с соединениями и драйверами.
В качестве примечания, я бы хотел, чтобы вы заметили, как в коде я всегдаукажите, какое исключение я ожидаю: перехват всех исключений может быть опасным .Кстати, вероятно, никто не умрет, если вы просто используете except: