selenium 等待特定element加载完成,在进行后续操作

在使用selenium 进行测试的时候经常会碰到 ** element不存在的问题,而实际上这个元素是存在的

出现这个问题的主要原因是,当selenium去操作特定元素A的时候,这个A元素还没有加载完成在页面上没有显示出来,

selenium固然是找不到的

要解决这个问题一开始我是这样实现的:

Thread.sleep(10000),我先睡一会,然后去操作,或者使用selenium.wait(10000),等待一会再去操作

也或者使用 selenium.waitForPageToLoad(""); 但是这个方法是加载“新” 页面完成,如果不是新页面,如ajax操作的一个页面,这个方法就不灵了

自己写个方法,循环等待这个元素,如果这个元素存在就停止等待,否则超时后退出:

private void waitForAllElementLoad(String locator,long timeout){
     for (int second = 0;; second++) { 
logger.error("waitForAllElementLoad=============>"+second);
           if (second >= timeout){logger.error("timeout");break;} 
            if (selenium.isElementPresent(locator))break; 
            try {
	   selenium.wait(1000);//or Thread.sleep(1000);
	} catch (InterruptedException e) {e.printStackTrace();}
            
        }
}

哈哈哈

扫描二维码关注公众号,回复: 1184989 查看本文章

刚刚经过测试:
这个方法更OK ,上面的大家可以不用看了

selenium.waitForCondition("var isExist = selenium.isElementPresent(\"css=input[value=创建]\");isExist==true", "30000");

猜你喜欢

转载自cxr1217.iteye.com/blog/723378