根据URL生成该网页的长截屏,并发送数据到邮箱
前言
工作中领导提出的需求,也是查阅了许久,特此记录。
一、根据网址生成该网页的长截图
1.引入库
这里采用selenium网页自动化测试工具,采用核心功能AShot实现
需要依赖有
<dependency>
<groupId>ru.yandex.qatools.ashot</groupId>
<artifactId>ashot</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0-alpha-3</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>4.0.0-alpha-3</version>
</dependency>
同时还需要下载 chromedriver.exe,并根据该下载存放的路径进行配置
2.代码
public static void main(String[] args) {
// TODO Auto-generated method stub
WebDriver driver;
System.setProperty( "webdriver.chrome.driver" , "D:/chromedriver.exe" );
driver= new ChromeDriver();
driver.manage().timeouts().implicitlyWait( 60, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get( "https://nba.hupu.com/" ); //take screenshot of the entire page
Screenshot screenshot= new AShot().shootingStrategy(ShootingStrategies.viewportPasting( 1000 )).takeScreenshot(driver);
try {
ImageIO.write(screenshot.getImage(), "jpg" , new File("D:/test.jpg"));//截图存放路径
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
driver.quit();
}
根据url获取网页长截图:
二、发送数据到邮箱
1.引入库
需要导入mail.jar
2.代码
代码如下(示例):
public class EmailUtil {
private static EmailUtil eu = new EmailUtil();
public static EmailUtil getInstance() {
return eu;
}
private EmailUtil() {
}
public void send(String email, String content1, String subject) throws MessagingException {
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(props, null);
try {
if (checkEmail(email)) {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("[email protected]"));
msg.setRecipients(RecipientType.TO, InternetAddress.parse(email));
msg.setSubject(subject);
Multipart msgPart = new MimeMultipart("mixed");
msg.setContent(msgPart);
MimeBodyPart body = new MimeBodyPart();
msgPart.addBodyPart(body);
Multipart contentPart = new MimeMultipart("related");
body.setContent(contentPart);
MimeBodyPart content = new MimeBodyPart();
contentPart.addBodyPart(content);
content.setContent(content1, "text/html;charset=utf-8");
msg.setContent(contentPart);
msg.saveChanges();
Transport trans = session.getTransport();
trans.connect("smtp.qiye.163.com", "[email protected]", "xxxxx");
trans.sendMessage(msg, msg.getAllRecipients());
trans.close();
} else {
System.out.println("邮箱格式错误!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
// 验证邮箱
public boolean checkEmail(String email) {
String regex = "^([a-z0-9A-Z]+[-|_|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$";
return email.matches(regex);
}
}
总结
该文章仅单单介绍该主题所涉及的核心代码及工具,仅供自学记录。