element = driver.find_element_by_id("user_first_name")
如果python无法在页面中找到该元素,我应该在代码中添加什么来关闭浏览器/程序并重新启动所有内容?
答案 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。