在python 2.7中使用Selenium时出现StaleElementReferenceException错误

时间:2018-04-13 10:15:51

标签: python selenium selenium-webdriver selenium-chromedriver

我使用此代码通过Id清除文本字段(使用Selenium和python 2.7):

from selenium.webdriver.common.keys import Keys

browser = webdriver.Chrome():
browser.get('https://www.google.com')
search = browser.find_element_by_id('lst-ib')
search.send_keys('Python 2')
search.send_keys(Keys.RETURN)
time.sleep(6)
search.clear()
time.sleep(2)
browser.close()

它给了我错误:

  

StaleElementReferenceException Traceback(最近一次调用   最后)in()   StaleElementReferenceException:消息:陈旧元素引用:   元素未附加到页面文档(会话信息:   chrome = 65.0.3325.181)(驾驶信息:chromedriver = 2.37.544315   (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform = Windows NT   10.0.16299 x86_64)

有谁知道如何解决这个问题

1 个答案:

答案 0 :(得分:3)

加载search.send_keys(Keys.RETURN)新页面后,search无法访问。您只需要重新定义此变量

from selenium.webdriver.common.keys import Keys

browser = webdriver.Chrome():
browser.get('https://www.google.com')
search = browser.find_element_by_id('lst-ib')
search.send_keys('Python 2')
search.send_keys(Keys.RETURN)
time.sleep(6)
search = browser.find_element_by_id('lst-ib')
search.clear()
time.sleep(2)
browser.close()

另请注意,使用time.sleep()是一种不好的做法。你应该看看Implicit/Explicit waits