我使用此代码通过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)
有谁知道如何解决这个问题
答案 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