Selenium2学习-012-WebUI自动化实战实例-010-解决元素失效:StaleElementReferenceException: stale element reference: element is not attached to the page document

元素失效的想象提示信息如下图所示,此种问题通常是因为元素页面刷新之后,为重新获取元素导致的。

解决此类问题比较简单,只需要在页面刷新之后,重新获取一下元素,就可以消除此种错误了。

以下以易迅网搜索为例进行实例代码演示,希望对各位小主有所启发,若有不足或错误之处,敬请大神指正,不胜感激!

下述代码中若需消除 StaleElementReferenceException 异常,将 43 行中的注释取消,重新运行即可。

复制代码
 1 package main.aaron.demo.javascript;
 2 
 3 import org.openqa.selenium.By;
 4 import org.openqa.selenium.JavascriptExecutor;
 5 import org.openqa.selenium.WebElement;
 6 import org.testng.annotations.Test;
 7 
 8 import main.aaron.sele.core.TestCase;
 9 
10 /**
11  * JavaScript 在 Selenium 自动化中的应用实例
12  * 
13  * @author Aaron.ffp
14  * @version V1.0.0: autoSeleniumDemo main.aaron.demo.javascript JavaScript.java, 2015-6-17 00:24:59 Exp $
15  */
16 public class JavaScript extends TestCase{
17     // 执行 JavaScript 脚本,输入查询内容
18     private String jscript = "document.getElementById('q_show').value='iPhone 6 plus'";
19     private String baseUrl = "http://www.yixun.com/";
20     
21     /**
22      * JavaScript 赋值
23      * 
24      * @author Aaron.ffp
25      * @version V1.0.0: autoSeleniumDemo main.aaron.demo.javascript JavaScript.java testJscript, 2015-6-17 12:37:57 Exp $
26      * 
27      * @throws InterruptedException
28      */
29     @Test
30     public void testJscript() throws InterruptedException{
31         this.webdriver.get(this.baseUrl);
32         
33         WebElement search = this.webdriver.findElement(By.cssSelector(".mod_search_btn"));
34         System.out.println(search.getText());
35         this.execJavascript(jscript);
36         
37         
38         WebElement in = this.webdriver.findElement(By.id("q_show"));
39         
40         search.click();
41 
42         // 页面刷新,需要重新获取元素,否则会报错
43         // in = this.webdriver.findElement(By.id("q_show"));
44         
45         System.out.println("现像值 --- q_show.getText() : " + in.getText());
46         
47         this.webdriver.close();
48         this.webdriver.quit();
49     }
50     
51     /**
52      * 执行 JScript 脚本
53      * 
54      * @author Aaron.ffp
55      * @version V1.0.0: autoUISelenium main.java.aaron.sele.core SeleniumCore.java execJavascript, 2015-6-17 00:25:38 Exp $
56      * 
57      * @param jscript 脚本
58      */
59     public void execJavascript(String jscript){
60         ((JavascriptExecutor)this.webdriver).executeScript(jscript);
61     }
62 }
元素失效演示:StaleElementReferenceException
复制代码

 

至此,WebUI 自动化功能测试脚本第 010 篇-解决元素失效:StaleElementReferenceException 顺利完结,希望此文能够给初学 Selenium 的您一份参考。

 

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

 

posted @   范丰平  Views(21661)  Comments(1Edit  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示