web自动化之常见的异常,selenium.common.exceptions.StaleElementReferenceException

发布时间:2023年12月28日

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()

注意:有问题的代码和修复后的代码可在资源绑定中自行下载,如有问题可在评论区留言

文章来源:https://blog.csdn.net/weixin_42242910/article/details/135224679
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。