With selenium in python i want to click on a html div container if it contains some words and if it can't find any the script must exit.
With the below code it is working if there is a div containing a word from the text
list but how do i exit where non of the words is found? With the code below it executes order.click
because this is outside the for loop. I only want to execute order.click()
and go further with the rest of the script break
if words are found
text = ["Dog", "Cat", "Bird"]
for word in text:
try:
order = WebDriverWait(driver,5).until(EC.presence_of_element_located((By.XPATH, "//div/p[contains(text(),'{}')]".format(word))))
if order != None:
print(f"found div with word: {word}")
break
except:
print(f"did NOT found div with word: {word}")
order.click()
# and more commands after this....
CodePudding user response:
import sys
And in the except:
text = ["Dog", "Cat", "Bird"]
is_found = False
for word in text:
try:
order = WebDriverWait(driver,5).until(EC.presence_of_element_located((By.XPATH, "//div/p[contains(text(),'{}')]".format(word))))
if order != None:
print(f"found div with word: {word}")
is_found = True
break
except:
print(f"did NOT found div with word: {word}")
if is_found == False:
sys.exit()
order.click()
# and more commands after this....
This is if you want to exit the whole script.
If you just want to not run order.click()
,
Then move this line in your try
scope:
try:
order = WebDriverWait(driver,5).until(EC.presence_of_element_located((By.XPATH, "//div/p[contains(text(),'{}')]".format(word))))
if order != None:
print(f"found div with word: {word}")
order.click()
break
CodePudding user response:
I think you need to include the "order.click()" in the indented part of the code that check if the item is found in the list, like below.
text = ["Dog", "Cat", "Bird"]
for word in text:
try:
order = WebDriverWait(driver,5).until(EC.presence_of_element_located((By.XPATH, "//div/p[contains(text(),'{}')]".format(word))))
if order != None:
print(f"found div with word: {word}")
order.click()
break
except:
print(f"did NOT found div with word: {word}")