1、PhantomJS下载
下载地址:https://phantomjs.org/download.html
2、WebDriver下载
下载地址:https://www.seleniumhq.org/download/
3、使用Selenium WebDriver 调用PhantomJS
DesiredCapabilities caps = new DesiredCapabilities(); caps.setJavascriptEnabled(true); caps.setCapability("takesScreenshot", true); caps.setCapability( PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "path\\phantomjs.exe"//phantomjs.exe所在路径 ); WebDriver driver = new PhantomJSDriver(caps);
或
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.phantomjs.PhantomJSDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class Selenium2Example { public static void main(String[] args) { //创建Firefox驱动程序的一个新实例 //注意,代码的其余部分依赖于接口, //不是实现。 System.setProperty("phantomjs.binary.path", System.getProperty("user.dir")+"/phantomjs"); WebDriver driver = new PhantomJSDriver(); //现在用这个访问谷歌 driver.get("http://www.google.com"); // 同样的事情也可以这样做 // driver.navigate().to("http://www.google.com"); // 根据文本输入元素的名称查找它 WebElement element = driver.findElement(By.name("q")); // 输入要搜索的内容 element.sendKeys("Cheese!"); // 现在提交表单。WebDriver将从元素中为我们找到表单 element.submit(); // 检查页面的标题 System.out.println("Page title is: " + driver.getTitle()); //谷歌的搜索是用JavaScript动态呈现的。 //等待页面加载,超时10秒 (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().startsWith("cheese!"); } }); // 应该看到: "cheese! - Google Search" System.out.println("Page title is: " + driver.getTitle()); //关闭浏览器 driver.quit(); } }
4、使用命令行直接调用PhantomJS
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * @Description:根据网页地址转换成图片 * @Author: admin * @CreateDate: 2018年6月22日 */ public class PhantomTools { private static String tempPath = "D:/temp/img";// 图片保存目录 private static String BLANK = " "; // 下面内容可以在配置文件中配置 private static String binPath = "D:/tooles/phantomjs/phantomjs-2.1.1-windows/bin/phantomjs.exe";// 插件引入地址 private static String jsPath = "D:/tooles/phantomjs/phantomjs-2.1.1-windows/examples/rasterize.js";// js引入地址 // 执行cmd命令 public static String cmd(String imgagePath, String url) { return binPath + BLANK + jsPath + BLANK + url + BLANK + imgagePath; } //关闭命令 public static void close(Process process, BufferedReader bufferedReader) throws IOException { if (bufferedReader != null) { bufferedReader.close(); } if (process != null) { process.destroy(); process = null; } } /** * @param userId * @param url * @throws IOException */ public static void printUrlScreen2jpg(String url) throws IOException{ String imgagePath = tempPath+"/"+System.currentTimeMillis()+".png";//图片路径 //Java中使用Runtime和Process类运行外部程序 Process process = Runtime.getRuntime().exec(cmd(imgagePath,url)); InputStream inputStream = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String tmp = ""; while ((tmp = reader.readLine()) != null) { close(process,reader); } System.out.println("success"); } public static void main(String[] args) throws IOException { String url = "https://www.baidu.com/"; PhantomTools.printUrlScreen2jpg(url); } }