• 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 的您一份参考。

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

     

  • 相关阅读:
    [恢]hdu 1548
    [恢]hdu 2102
    [恢]hdu 1238
    [恢]hdu 2564
    [恢]hdu 2565
    关于mmu,bootloader,dta以及各种乱七八糟
    总有那些让人XX的词语
    VS2005+SQL2005 Reporting Service动态绑定报表(Web)
    (已测试)在本地处理模式下将数据库数据源与 ReportViewer Web 服务器控件一起使用
    如何在单台计算机上安装 Reporting Services
  • 原文地址:https://www.cnblogs.com/fengpingfan/p/4583325.html
Copyright © 2020-2023  润新知