• Webdriver如何解决页面元素过期:org.openqa.selenium.StaleElementReferenceException: Element not found in the cache


    当运行Webdriver时抛出如下异常:org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up。目前解决办法似乎只有一个,也是最显而易见的方式,重新定位一次该元素。我们不妨看下该异常所表达的意思:元素没有在缓存中找到,也许页面已经改变了当你在查找这个元素的时候。

    在什么情况下会造成这种异常:当页面被刷新的时候,你还要操作这个页面上的元素。这句话什么意思?为什么说是在刷新的时候,我们不妨想象一个业务场景:当你在提交一个订单,提交完成之后,页面又刷新,重定向到了当前页面,然后你又需要提交另一个订单,在你第二次点击提交按钮的时候,就会抛出这个异常。发生的前提是:你第一次提交的时候是定位了提交按钮的:WebElement confrimBtn = driver.findElement(By.id("confrimBtn"));然后点击提交按钮,confrimBtn.click(),第二次提交订单时就偷懒了,直接confrimBtn.click(),然后,就没有然后了,自己死活找不到出错原因。

    这里主要解释为什么会出现这个错误:当你需要对同一个页面进行多次重复的操作的时候,第一次定位的元素,页面刷新后,在你第二次,第三次需要调用时,浏览器默认认为它是失效的,不允许你去调用它。就相当于你买了张电影票,看完了这场电影,过了几天,你朋友约你一起去电影,你拿着上次的票,别人还会让你进去吗?

  • 相关阅读:
    收集的各种学习链接,方便查找
    用python调试Appium和雷电模拟器连接时出现Original error: Could not find 'adb.exe' in PATH
    App自动化测试之Appium环境安装(涉及雷电模拟器和真机)
    元素定位工具ChroPath
    Python+Selenium学习笔记19
    Python+Selenium学习笔记18
    Python+Selenium学习笔记17
    Python+Selenium学习笔记16
    Python+Selenium学习笔记14
    Python+Selenium学习笔记15
  • 原文地址:https://www.cnblogs.com/zw520ly/p/5888766.html
Copyright © 2020-2023  润新知