如何使用“ if”通过python测试网页中某个元素的存在?

时间:2019-04-11 16:01:51

标签: python-3.x selenium selenium-webdriver

我创建了一个循环(while True),以使用python自动执行站点上的任务。此代码单击两个字段,直到元素出现在页面上

(browser.find_element_by_id ('formComp: buttonBack')

出现此元素时,我希望循环停止并转到下一个代码块。

我以这种方式进行了测试,但是它犯了一个错误。 Python报告未找到元素"formComp: buttonback"。就是这样,如果找不到,请继续循环:

    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

2 个答案:

答案 0 :(得分:1)

尝试这样希望对您有所帮助。检查按钮的length计数是否大于0。

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

答案 1 :(得分:0)

找不到元素时,

find_element_by_id()不返回False。相反,它会引发selenium.common.exceptions.NoSuchElementException。您可以处理该异常以获得所需的流控制:

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