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加载不能识别对象的问题。

转载于:https://www.cnblogs.com/alterhu/p/3357460.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值