selenium模拟登陆时截取验证码

模拟登陆时,经常会遇到有验证码的问题,那么就需要把验证码给截取下来。

如下为截取验证码程序,该程序的原始地址为:http://www.cnblogs.com/donaldlee2008/p/5304504.html

有需要配置运行程序的请联系我:[email protected]

package login;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;


public class Test1 {

    public static void main(String[] args) throws IOException {
        System.setProperty("webdriver.gecko.driver", "chrome\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();; 
          driver.get("http://weixin.sogou.com/antispider/?from=%2fweixin%3Ftype%3d2%26query%3dz+%26ie%3dutf8%26s_from%3dinput%26_sug_%3dy%26_sug_type_%3d");
          WebElement ele = driver.findElement(By.id("seccodeImage"));
          // Get entire page screenshot
          java.io.File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
          BufferedImage  fullImg = ImageIO.read(screenshot);
          // Get the location of element on the page
          Point point = ele.getLocation();
          // Get width and height of the element
          int eleWidth = ele.getSize().getWidth();
          int eleHeight = ele.getSize().getHeight();
          // Crop the entire page screenshot to get only element screenshot
          BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(),
              eleWidth, eleHeight);
          ImageIO.write(eleScreenshot, "png", screenshot);
          // Copy the element screenshot to disk
          File screenshotLocation = new File("E:/钱洋个人/IdentifyingCode/test.png");
          FileUtils.copyFile(screenshot, screenshotLocation);
          WebElement classelement = driver.findElement(By.className("p2"));
          String errorText=classelement.getText();
          System.out.println("验证码"+classelement.getText());

      }
}

如下,为我程序运行结果:
selenium模拟登陆时截取验证码_第1张图片

selenium模拟登陆时截取验证码_第2张图片

很神奇,网页中的验证码被成功截取到了本地。

你可能感兴趣的:(基于java网络爬虫)