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的兄弟请看之前的博客。