while循环中出错

时间:2018-06-10 15:36:03

标签: python selenium

我对此代码有疑问:

var = 1
while var :
  if(browser.find_element_by_xpath("//p[contains(text(),'sometext')]")):
    var = 1
    browser.refresh()
    time.sleep(2)
  else:
    mail = WebDriverWait(browser, 20).until(
    EC.presence_of_element_located((By.XPATH, "//input[@id='email_l']")));
    mail.send_keys(mailStr)

所以问题出在if里面,实际上在网站上没有文字的某些文字,但我想继续使用else条件。 错误如下:

Message: no such element: Unable to locate element: 
{"method":"xpath","selector":"//p[contains(text(),'sometext')]"}

然后停止。 这是我的错误? 谢谢

1 个答案:

答案 0 :(得分:0)

此错误消息......

Message: no such element: Unable to locate element: {"method":"xpath","selector":"//p[contains(text(),'sometext')]"}

...暗示定位器策略未识别HTML DOM中的任何唯一元素。

根据您的问题,在网页中没有任何元素存在,文字为 sometext ,您希望继续使用else条件。因此,您需要将if{}块包围在try-catch {}块中,并在else{}块内的catch{}块内传输代码块,如下所示:

var = 1
while var :
    try:
        if(browser.find_element_by_xpath("//p[contains(text(),'sometext')]")):
            var = 1
            browser.refresh()
            time.sleep(2)
    except NoSuchElementException:
        mail = WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, "//input[@id='email_l']")));
        mail.send_keys(mailStr)