Webdriver如何解決頁面元素過期:org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up


當運行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(),然后,就沒有然后了,自己死活找不到出錯原因。

這里主要解釋為什么會出現這個錯誤:當你需要對同一個頁面進行多次重復的操作的時候,第一次定位的元素,頁面刷新后,在你第二次,第三次需要調用時,瀏覽器默認認為它是失效的,不允許你去調用它。就相當於你買了張電影票,看完了這場電影,過了幾天,你朋友約你一起去電影,你拿着上次的票,別人還會讓你進去嗎?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM