selenium自动化代码,报错selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
StaleElementReferenceException是陈旧的元素引用异常
这个异常发生在
? ? 获取元素赋值给变量,再通过变量操作元素,两个步骤之间,若产生了界面刷新
? ? 则会在通过变量操作元素的时候,抛出此异常
再15行前面加一行代码self.driver.refresh()
运行结果:
解决方案:
? ? 每次操作元素前,实时获取元素赋值给变量
? ? 也就是说,若在获取元素赋值给变量,与通过变量操作元素之间发生了页面刷新
? ? 则在界面刷新后,元素操作前,重新获取元素赋值给变量
解决后的代码
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()
注意:有问题的代码和修复后的代码可在资源绑定中自行下载,如有问题可在评论区留言