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上運行可以直接使用)因為我的開發(fā)機是mac os 使用File scrFile =((TakesScreenshot)wrapsDriver.getWrappedDriver()).getScreenshotAs(OutputType.FILE); 獲取到的圖片尺寸要大于瀏覽器頁面的尺寸。如果直接使用瀏覽器上的Point屬性是截取不到指定元素的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,164評論 1 92
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,134評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,602評論 19 139
  • 人自風流水自愁,堂前歡喜夢時憂,相思遍處是沙洲。 燕子南北兩新社,朋旅東西各自游,寒窗獨望小銀鉤。
    花無重日人未紅閱讀 279評論 3 7
  • 1、生命的偉大秘密就是吸引力法則。 2、吸引力法則說“同類相吸”。因此當你有了一個思想,你也會吸引同類的思想過來。...
    b1de6864b423閱讀 190評論 0 0

友情鏈接更多精彩內容