java + selenium测试框架(之下载页面上的图片) 版本演化七

java + selenium测试框架(之下载) 版本演化七

准备攻克验证码验证,知识积累中。

下载感兴趣的图片

从网上找了个程序,挺好用的,直接放这里了。

import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class SaveFileUtil {

    public final static boolean DEBUG = true;//调试用

    private static int BUFFER_SIZE = 8096;

    /**
       * 将HTTP资源另存为文件
       *
       * @param destUrl String
       * @param fileName String
       * @throws Exception
       */
      public static void saveToFile(String destUrl, String fileName) {
        FileOutputStream fos = null;
        BufferedInputStream bis = null;
        HttpURLConnection httpUrl = null;
        URL url = null;
        byte[] buf = new byte[BUFFER_SIZE];
        int size = 0;

        //建立链接
        try {
            url = new URL(destUrl);
            httpUrl = (HttpURLConnection) url.openConnection();
            //连接指定的资源
            httpUrl.connect();
            //获取网络输入流
            bis = new BufferedInputStream(httpUrl.getInputStream());
            //建立文件
            fos = new FileOutputStream(fileName);

            if (DEBUG) 
                System.out.println("正在获取链接[" + destUrl + "]的内容..\n将其保存为文件[" + fileName + "]");

            //保存文件
            while ( (size = bis.read(buf)) != -1) 
              fos.write(buf, 0, size);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(fos!=null)fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if(bis!=null)bis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            httpUrl.disconnect();
        }
      }
}

Demos

需求:从126.com的网站上,下载个图片,就是那个二维码的小图片。

public class Login126Page extends Page{

    public Login126Page(WebDriver driver) {
        super(driver);
    }

    @FindBy(id="yxCode")
    protected WebElement imgSrc;

    protected String getPicInfo() {
        sleep(2);
        return imgSrc.getAttribute("src");
    }
}

测试用例:

public class Login126Test extends TestBase{

    Login126Page page = null;

    String path = "http://www.126.com/";

    @BeforeMethod
    public void initPage() {
        page = new Login126Page(driver);
        page.openAndWait(path);
        PageFactory.initElements(driver, page);
    }

    @Test
    public void testLogin() {
        String url = page.getPicInfo();
        SaveFileUtil.saveToFile(url, "1.jpg");
        System.out.println(page.getCurrentUrl());
    }
}

写在最后,为了增加点击。需要TestBase,Page的兄弟请看之前的博客。

你可能感兴趣的:(测试,selenium,Java,Selenium自动化)