I'm trying to write a while loop where if an element isn't found it does certain tasks, however when the element is not found, it throws an error NoSuchElementException
as if there is no element, instead of going to the 'else' statement.
elem = driver.find_element_by_id('add-to-bag')
while True:
if elem.is_displayed():
False
else:
driver.delete_all_cookies()
driver.refresh()
sleep(randint(5, 10))
As per your code block when you mention if an element is found it does certain tasks, however when the element is not found, it throws an error code
is perfect.
The code to find the element is just before the while/if
block started. So when your find_element_by_id('add-to-bag')
fails instead of returning an element it is returning NoSuchElementException which you havn't handled.
A simple solution would be to induce a try-except
block for find_element_by_id('add-to-bag')
as follows :
try :
elem = driver.find_element_by_id('add-to-bag')
if elem.is_displayed():
//implement your logic
except NoSuchElementException :
driver.delete_all_cookies()
driver.refresh()
sleep(randint(5, 10))