码迷,mamicode.com
首页 > 其他好文 > 详细

selenium高效刷新图验证码

时间:2016-08-17 13:44:57      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

使用场景:项目中用selenium驱动chrome在网页中登录,但是登录有图形验证码,想刷新验证码时,模拟点击图片刷新,但是由于点击后图片是异步加载,所以无法得知新图片什么时候加载完成,就用wait等待3s后,再截返回图验证码图片.但是这样刷新验证码很慢,体验不好.

解决思路:打开一个新标签页,然后get请求图片验证码url.再截返回图验证码图片.由于get是阻塞的,所以不用判断图片加载状态问题.

编码设置:

/**
* 刷新图形验证码,通过在新标签get方式(同步)获取图形验证码,达到实时响应效果
* @param imageUrl
* @return BufferedImage
*/
public BufferedImage getRefreshImage(String imageUrl){
lastUpdateTime = System.currentTimeMillis();
BufferedImage image = null;
WebDriver newWindowDriver = null;

//打开新标签
this.executeScript("window.open(‘data:,‘)");
//获取所有标签
ArrayList<String> tabs = new ArrayList<String> (this.driver.getWindowHandles());
try {
//切换到新标签
newWindowDriver = this.driver.switchTo().window(tabs.get(1));
//在新标签中打开图片
newWindowDriver.get(imageUrl);
//获取截图
image = SeleniumTools.getElementImage(newWindowDriver, By.tagName("img"));
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭新标签页
if (newWindowDriver != null) newWindowDriver.close();
//切换到原页面
this.driver.switchTo().window(tabs.get(0));
}
return image;
}

selenium高效刷新图验证码

标签:

原文地址:http://www.cnblogs.com/ihenry/p/5779428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!