Marcus Junior
Marcus Junior

Reputation: 31

how to use "if" to test the presence of an element in the webpage with python?

I created a loop (while True) to automate a task on the site with python. This code clicks on two fields until an element appears on the page

(browser.find_element_by_id ('formComp: buttonBack').

When this element appears, I want the loop to stop and go to the next block of code.

I tested it that way, but it made a mistake. Python reported that the element "formComp: buttonback" was not found. But that's just it, if not found continue the loop:

    while (browser.find_element_by_id('formComp:repeatCompromissoLista:0:tableRealizacao:0:subtableVinculacoes:0:vinculacao_input')):
        vinc = wait.until(EC.presence_of_element_located((By.ID, 'formComp:repeatCompromissoLista:0:tableRealizacao:0:subtableVinculacoes:0:vinculacao_input')))
        vinc = browser.find_element_by_id('formComp:repeatCompromissoLista:0:tableRealizacao:0:subtableVinculacoes:0:vinculacao_input')
        vinc.send_keys('400')
        enterElem5 = wait.until(EC.element_to_be_clickable((By.ID, 'formComp:buttonConfirmar')))
        enterElem5 = browser.find_element_by_id('formComp:buttonConfirmar')
        enterElem5.send_keys(Keys.ENTER)
        time.sleep(int(segundosv))
        if (browser.find_element_by_id('formComp:buttonRetornar')== True):
            break
        else:
            continue

Upvotes: 1

Views: 163

Answers (2)

Corey Goldberg
Corey Goldberg

Reputation: 60664

find_element_by_id() does not return False when an element is not found. Instead, it raises selenium.common.exceptions.NoSuchElementException. You can handle the exception to get the flow control you are looking for:

try:
    browser.find_element_by_id('formComp:buttonRetornar')
    break
except NoSuchElementException:
    continue

Upvotes: 0

KunduK
KunduK

Reputation: 33384

Try like this hope this helps.Check the length count of the button more than 0.

if (len(browser.find_elements_by_id('formComp:buttonRetornar'))>0):
        break
else:
        continue

Upvotes: 1

Related Questions