1.问题描述
selenium自动化代码,报错selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
StaleElementReferenceException是陈旧的元素引用异常
这个异常发生在
获取元素赋值给变量,再通过变量操作元素,两个步骤之间,若产生了界面刷新
则会在通过变量操作元素的时候,抛出此异常
再15行前面加一行代码self.driver.refresh()
运行结果:
2.问题解决
解决方案:
每次操作元素前,实时获取元素赋值给变量
也就是说,若在获取元素赋值给变量,与通过变量操作元素之间发生了页面刷新
则在界面刷新后,元素操作前,重新获取元素赋值给变量
解决后的代码
from selenium import webdriver
class loginPage:def __init__(self, url):# 创建浏览器驱动对象,这里是打开浏览器self.driver = webdriver.Chrome("E:\愤怒吧小鸟\chromedriver-win64\chromedriver.exe")# 访问网址self.driver.get(url)#用户名输入框self.user_name_input=self.driver.find_element_by_name("username")#密码输入框self.password_input=self.driver.find_element_by_name("password")#登录按钮self.login_button=self.driver.find_element_by_css_selector("button")def logn(self):self.driver.refresh()self.user_name_input.send_keys("libai")self.password_input.send_keys("opmsopms123")self.login_button.click()
LP = loginPage("http://127.0.0.1:8088/")
LP.logn()
注意:有问题的代码和修复后的代码可在资源绑定中自行下载,如有问题可在评论区留言