PhantomJS是個好東東,不少時候爬蟲須要用到,可是這個有windows、linux、mac的版本,想要跨平臺的話,須要本身再處理一下,幸虧有了phanbedder幫咱們作了這個事情,這樣就引一下jar包就完事了。html
Selenium是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操做同樣。支持的瀏覽器包括IE、Mozilla Firefox、Chrome等。java
Phantom JS是一個服務器端的 JavaScript API 的 WebKit。其支持各類Web標準: DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。linux
<dependency> <groupId>net.anthavio</groupId> <artifactId>phanbedder-2.1.1</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>com.github.detro.ghostdriver</groupId> <artifactId>phantomjsdriver</artifactId> <version>1.1.0</version> </dependency>
官網給的這個實際跑起來有點問題,報錯git
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.browserlaunchers.Proxies at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 29 more
須要更換一下github
<dependency> <groupId>net.anthavio</groupId> <artifactId>phanbedder-2.1.1</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.45.0</version> </dependency> <dependency> <groupId>com.codeborne</groupId> <artifactId>phantomjsdriver</artifactId> <version>1.2.1</version> <!-- this will _always_ be behind --> <exclusions> <exclusion> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> </exclusion> <exclusion> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-remote-driver</artifactId> </exclusion> </exclusions> </dependency>
//Phanbedder to the rescue! File phantomjs = Phanbedder.unpack(); DesiredCapabilities dcaps = new DesiredCapabilities(); dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantomjs.getAbsolutePath()); PhantomJSDriver driver = new PhantomJSDriver(dcaps); driver.setLogLevel(Level.INFO); //Usual Selenium stuff... driver.get("https://www.google.com"); WebElement query = driver.findElement(By.name("q")); query.sendKeys("Phanbedder"); query.submit(); System.out.println(driver.getTitle()); driver.quit();