Selenium刷新页面的处理方法

在实际项目的自动化测试中,我们经常会遇到进行某操作后页面会被刷新,定位元素找不到的情况。

现总结下,实践中我的解决方法:

当操作后页面会刷新或是JS加载时,都要增加等待刷新时间,保证在页面中能够定位到对应的元素。

方法一:显式等待。推荐使用。

显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception。如果后续代码还要用到这个WebElement,则代码可以这样写,如下:

//等待进入菜单管理页面

WebDriverWait menuwait = new WebDriverWait(driver,20);

  WebElement menuopenNode = menuwait.until(new ExpectedCondition<WebElement>(){ 

    @Override 

    public WebElement apply(WebDriver d) {

     WebElement menulastProject = driver.findElement(By.cssSelector("#admin-module-search-form"));

     return menulastProject; 

 }});

这里,20是要等待的秒数。如果没有满足until()方法中的条件,就会始终在这里wait 20秒,依然找不到,就抛出异常。

如果后续代码不需要用到这个WebElement,则代码可以这样写,如下:

(new WebDriverWait(driver,30)).until(ExpectedConditions.elementToBeClickable(By.linkText("菜单用户权限")));

方法二:强制等待

//刷新页面等待时间3秒

    try{

    Thread.sleep(3000);

    }

    catch(Exception e){

    e.printStackTrace();

}

方法三:隐式等待。不推荐使用。这个方法我完全没有使用到。

driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);

隐式等待, 此处的隐式等待是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间,  一些人对此处有误解,认为是让Driver等一段时间,  确实某些时候能让Driver等一段时间, 但是影响是全局的,每次Driver执行 找不到元素都会等待此处设置的时间,  假设某处将此值设置的太长,必须在执行完成之后还原回来,否则判断一个元素是否存在的时候,就会遇到很坑爹的问题。

参文:http://www.tuicool.com/articles/u63Eve

转载于:https://my.oschina.net/u/2315260/blog/808200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值