天天看點

6.1 Selenium環境搭建

1.簡介

Selenium WebDriver主要應用于程式與浏覽器之間的互動,其可以用來實作資料的采集。Selenium不自帶浏覽器,需要與第三方浏覽器結合使用,如本章與Selenium結合使用的浏覽器為谷歌浏覽器,相比Jsoup和HttpClient等工具,Selenium有其特有優勢,如自動加載頁面、執行JavaScript腳本、模拟真實的浏覽器操作等。

2.引入依賴

在Idea或者Eclipse中建立Maven工程,并在Maven工程的pom.xml檔案中添加Selenium的dependency,本專欄采用的版本是3.141.59。

<dependency>
   <groupId>org.seleniumhq.selenium</groupId>
   <artifactId>selenium-java</artifactId>
   <version>3.141.59</version>
</dependency>      

基于pom.xml檔案的配置資訊,可以下載下傳Selenium的jar包。在Selenium項目中,共包含如下圖所示的若幹個依賴包。

6.1 Selenium環境搭建

3.驅動下載下傳

在相關的jar包配置完成後,需要下載下傳Selenium WebDriver連接配接谷歌浏覽器的工具chromedriver。在谷歌浏覽器位址欄輸入“chrome://version/”檢視版本資訊,然後在

“http://chromedriver.storage.googleapis.com/index.html”上尋找與谷歌浏覽器版本相比對的驅動版本。下載下傳完成後,将檔案解壓到本地的自定義目錄chrome檔案夾下。

4.擷取WebDriver

程式6-1中,使用setProperty(String key,String value)配置chromedriver,然後執行個體化WebDriver(聲明使用的是谷歌浏覽器)。

//程式6-1
public class WebDriverUtils {
    public static WebDriver getWebDriver(){
        System.setProperty("webdriver.chrome.driver","/Users/steven/Documents/chrome/chromedriver");
        //聲明使用的是谷歌浏覽器
        ChromeOptions chromeOptions=new ChromeOptions();
        //執行個體化一個Chrome浏覽器的執行個體
        WebDriver driver = new ChromeDriver();
        //設定打開的浏覽器視窗最大化
        driver.manage().window().maximize();
        //設定隐性的等待時間
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        return driver;
    }
}      
//程式6-1
public class WebDriverUtils {
    public static WebDriver getWebDriver(){
        System.setProperty("webdriver.chrome.driver","/Users/steven/Documents/chrome/chromedriver");
        //聲明使用的是谷歌浏覽器
        ChromeOptions chromeOptions=new ChromeOptions();
        //設定無頭模式參數
        chromeOptions.addArguments("--no-sandbox");
        chromeOptions.addArguments("-headless");
        chromeOptions.addArguments("--disable-gpu");
        //執行個體化一個Chrome浏覽器的執行個體
        WebDriver driver = new ChromeDriver(chromeOptions);
        //設定打開的浏覽器視窗最大化
        driver.manage().window().maximize();
        //設定隐性的等待時間
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        return driver;
    }
}      
//程式6-2
public class WebDriverProxyUtils {
    public static WebDriver getWebDriver() {
        System.setProperty("webdriver.chrome.driver", PathConstant.CHROME_DRIVER_PATH);
        ChromeOptions chromeOptions = new ChromeOptions();
        //設定代理
        Proxy proxy = new Proxy();
        proxy.setAutodetect(false);
        proxy.setHttpProxy("58.218.200.223:12781");
        proxy.setSslProxy("58.218.200.223:12781");
        chromeOptions.setCapability("proxy", proxy);
        chromeOptions.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
        //執行個體化一個Chrome浏覽器的執行個體
        WebDriver driver = new ChromeDriver(chromeOptions);
        //設定打開的浏覽器視窗最大化
        driver.manage().window().maximize();
        //設定隐性的等待時間
        driver.manage().timeouts().pageLoadTimeout(120, TimeUnit.SECONDS);
        return driver;
    }
}      

繼續閱讀