zoukankan      html  css  js  c++  java
  • Selenium测试Ajax应用程序中的主要问题

    主要的问题可能就是页面加载的问题,有时候页面没有加载成功导致对象找不到,从而导致脚本不能运行。

    主要使用的方式是,在测试的全局中设置一个页面的加载时间,如果timeout就是没有找到对象。如下参考:

    http://chon.techliminal.com/ajax_wait/#/intro这个可以使用在所有的页面跳转中。

    但是对于在测试中交互的对象的显示可以使用如下的代码解决。

       /**wait for the ajax to be completed
            * inspired by the the blow url:
            * @link  http://hedleyproctor.com/2012/07/effective-selenium-testing/
            * @link  http://stackoverflow.com/questions/3272883/how-to-use-selenium-2-pagefactory-init-elements-with-wait-until
            * @author huchan
            * @param timeoutInSeconds
            */
        public void waitForAjaxPresent(int timeoutInSeconds)  {             
                   if (driver instanceof JavascriptExecutor) {
                       final long currentbowserstate=(Long)executeJS("return return jQuery.active;");
                        logger.info("Current ajax active code  is:"+currentbowserstate);
                        WebDriverWait wdw=new WebDriverWait(driver, timeoutInSeconds);
                        ExpectedCondition<Boolean> ec=new ExpectedCondition<Boolean>() {
                            @Override
                            public Boolean apply(WebDriver driver) {
                                // TODO Auto-generated method stub
                                long newpagestate=(Long) executeJS("return return jQuery.active;");
                                logger.debug("the new ajax active code is:"+newpagestate);
                                return (newpagestate==0L);
                            }
                        };
                        
                        boolean loaded=wdw.until(ec);
                        logger.debug("finally the ajax had been loaded status is:"+loaded);
                    }
                    else{
                        logger.error("Web driver: " + driver + " cannot execute javascript");
                    }
                
                }
    View Code

    基本上综合以上的方法,可以解决你的ajax加载不能识别对象的问题。

  • 相关阅读:
    smarty相关
    Log4Net五步走[转载]
    The Water Horse: Legend of the Deep
    网站内容都是重复的,一个一个的复制真麻烦
    EXT2学习笔记,转载
    改写的一首诗赋
    CheckBoxList多选,获得选中的值!
    去年受朋友委托办了4张卡
    粒细胞
    GridView合并表头与行的反思
  • 原文地址:https://www.cnblogs.com/seniortestingdev/p/3357460.html
Copyright © 2011-2022 走看看