selenium获取验证码图片

1. 通过浏览器截图的方式
/**
*@param WebElement 要截取的验证码
*@param driver 当前浏览器
*return 验证码图片
*/
public static File getImgFileByScreenshot(WebElement element, WebDriver driver){    
  if (element == null) throw new NullPointerException("图片元素失败");    
  WrapsDriver wrapsDriver = (WrapsDriver) element;    //截取整个页面    
  File scrFile = ((TakesScreenshot)wrapsDriver.getWrappedDriver()).getScreenshotAs(OutputType.FILE);    
  try {        
    BufferedImage img = ImageIO.read(scrFile);        
    int screenshotWidth = img.getWidth();        
    Dimension dimension = driver.manage().window().getSize();        
    //获取浏览器尺寸与截图的尺寸
    double scale = (double) dimension.getWidth() / screenshotWidth;        
    int eleWidth = element.getSize().getWidth();        
    int eleHeight = element.getSize().getHeight();        
    Point point = element.getLocation();        
    int subImgX = (int)(point.getX() / scale); //获得元素的坐标
    int subImgY = (int)(point.getY() / scale);        
    int subImgWight = (int)(eleWidth / scale); //获取元素的宽高
    int subImgHeight = (int)(eleHeight / scale); 
    //精准的截取元素图片,
    BufferedImage dest = img.getSubimage(subImgX, subImgY, subImgWight, subImgHeight);        
    ImageIO.write(dest, "png", scrFile);    
  } catch (Exception e) {        
    e.printStackTrace();    
  }    
  return scrFile;
}

#######这里多出了一个计算浏览器页面尺寸和截图尺寸比例的步骤并不直接使用Point的X和Y属性和元素的宽高来截取验证码。(如果代码只在window上运行可以直接使用)因为我的开发机是mac os 使用File scrFile =((TakesScreenshot)wrapsDriver.getWrappedDriver()).getScreenshotAs(OutputType.FILE); 获取到的图片尺寸要大于浏览器页面的尺寸。如果直接使用浏览器上的Point属性是截取不到指定元素的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,065评论 1 92
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,504评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,483评论 19 139
  • 人自风流水自愁,堂前欢喜梦时忧,相思遍处是沙洲。 燕子南北两新社,朋旅东西各自游,寒窗独望小银钩。
    花无重日人未红阅读 279评论 3 7
  • 1、生命的伟大秘密就是吸引力法则。 2、吸引力法则说“同类相吸”。因此当你有了一个思想,你也会吸引同类的思想过来。...
    b1de6864b423阅读 186评论 0 0

友情链接更多精彩内容