六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 208|回复: 0

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

[复制链接]

升级  64%

8

主题

8

主题

8

主题

童生

Rank: 1

积分
32
 楼主| 发表于 2013-2-8 00:47:36 | 显示全部楼层 |阅读模式
在使用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");
 
 
 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表