Selenium Python-如果找不到元素,关闭所有内容并重新启动

时间:2014-08-06 04:37:13

标签: python selenium selenium-webdriver element restart

element = driver.find_element_by_id("user_first_name")

如果python无法在页面中找到该元素,我应该在代码中添加什么来关闭浏览器/程序并重新启动所有内容?

2 个答案:

答案 0 :(得分:1)

您可以使用WebdriverWait并等待,直到找到该元素或发生超时:

from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait

try:
    element = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id('user_first_name'))
    # do smth with the found element
except TimeoutException:
    print "Element Not Found"
    driver.close()

另一个选择是将整个打开浏览器,获取页面,将元素放入无限循环中,如果找到元素,您将break

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

while True:
    driver = webdriver.Firefox()
    driver.get('http://example.com')

    try:
        element = driver.find_element_by_id("user_first_name")
    except NoSuchElementException:
        driver.close()
        continue
    else:
        break

# do smth with the element

答案 1 :(得分:0)

如果等待Ajax呼叫完成,您可以使用waitForElementPresent(locator)。有关处理等待的更多选项,请参阅this question