您的位置:首页 > 运维架构 > Linux

Linux系列-Red Hat5平台下的LAMP网站服务搭建(四)

2010-03-17 11:59 996 查看
在使用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();}

}
}

 

 

 

哈哈哈

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


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

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: