Selenium是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。而對於爬蟲來說,使用Selenium操控瀏覽器來爬取網上的數據那么肯定是爬蟲中的殺手武器。這里,我將介紹selenium + 谷歌瀏覽器的一般使用。首先會介紹如何安裝部署環境,然后貼出一些本人所使用的一些方法,最后給出github地址,供大家下載。
1. selenium 環境配置
selenium 官網地址:http://www.seleniumhq.org/download/
導入 selenium 的 jar 包有多種方式,這里介紹兩個:
第一種是直接下載,然后將下載中的 jar 包復制到eclipse或者idea中,然后添加即可
第二種是使用maven
3.總結



2. 下載github代碼並且進行測試
谷歌瀏覽使用的版本是:60.0.3112.78,這里注意,谷歌瀏覽器和谷歌驅動需要匹配。具體可以見:
http://blog.csdn.net/llbacyal/article/details/78563992

idea使用的版本是:2016.12
Java使用的版本是:1.8
- 首先在github上下載代碼,地址為:https://github.com/lunaMoon1010/SeleniumDemo

- 導入項目
1、解壓后,使用idea導入該項目

2、選擇剛剛解壓的項目

3、讓maven導入jar包,maven簡單來說是一個jar包管理插件,通過配置的方式在maven倉庫下載你所需要的jar包

- 運行代碼進行測試
1、測試HelloWorld,方法里面具體的內容請到方法里面查看,注釋都是有寫的
/** * 用來測試第一個代碼,訪問百度 */ @Test public void testHelloWorld() throws Exception { //開啟個瀏覽器並且輸入鏈接 WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/"); //得到瀏覽器的標題 System.out.println(driver.getTitle()); Thread.sleep(5000); //關閉瀏覽器 下面是關閉所有標簽頁,還有一個代碼是 driver.close();, 關閉當前標簽頁 driver.quit(); }
如果你運行出現下圖情況,說明你環境上沒有問題了

2、測試自動輸入
/** * 測試向input標簽輸入值 */ @Test public void testInputStrByJS(){ //開啟個瀏覽器並且輸入鏈接 WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/"); //向input輸入值 PageUtils.inputStrByJS(driver, "kw", "月之暗面 博客園"); }
如果出現下面情況說明你測試成功了

3、測試點擊
/** * 測試點擊 */ @Test public void testScrollToElementAndClick() throws Exception { //1、開啟個瀏覽器並且輸入鏈接 WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/"); //2、向百度輸入框輸入需要查詢的值 PageUtils.inputStrByJS(driver, "kw", "月之暗面 博客園"); //3、得到百度一下的標簽 WebElement submitElement = driver.findElement(By.cssSelector("input#su")); //4、點擊百度一下 PageUtils.scrollToElementAndClick(submitElement, driver); //休息3秒,加載數據 Thread.sleep(3000); //5、首先找到 id 為 content_left 的 div 下面的所有 div List<WebElement> divElements = driver.findElements(By.cssSelector("div#content_left div")); //6、找到搜索的第一個鏈接 WebElement aElement = divElements.get(0).findElement(By.cssSelector("div.f13 a[href]")); //7、點擊該鏈接 PageUtils.scrollToElementAndClick(aElement, driver); }
如果出現下面情況,說明測試成功了

4、測試標簽頁切換
/** * 測試切換到另一個標簽頁 */ @Test public void testGetAnotherPage() throws Exception { //1、開啟個瀏覽器並且輸入鏈接 WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/"); //2、向百度輸入框輸入需要查詢的值 PageUtils.inputStrByJS(driver, "kw", "月之暗面 博客園"); //3、得到百度一下的標簽 WebElement submitElement = driver.findElement(By.cssSelector("input#su")); //4、點擊百度一下 PageUtils.scrollToElementAndClick(submitElement, driver); //休息3秒,加載數據 Thread.sleep(3000); //5、首先找到 id 為 content_left 的 div 下面的所有 div List<WebElement> divElements = driver.findElements(By.cssSelector("div#content_left div")); //6、找到搜索的第一個鏈接 WebElement aElement = divElements.get(0).findElement(By.cssSelector("div.f13 a[href]")); //7、點擊該鏈接 PageUtils.scrollToElementAndClick(aElement, driver); //8、當前頁面時百度的頁面 //將瀏覽器對象強制轉為可以執行js的對象 System.out.println("現在的頁面是:"+driver.getTitle()); //9、切換到博客園頁面 PageUtils.getAnotherPage(driver); //將瀏覽器對象強制轉為可以執行js的對象 System.out.println("現在的頁面是:"+driver.getTitle()); }
如果出現下面的情況說明你測試成功了
3.總結
Selenium是一個用於Web應用程序測試的工具。但是也可以用來做爬蟲,如果需要得到對應的數據,可以通過 element.getText()的方法得到,element的類型是WebElement。期間可能會有很多錯誤,但是希望大家能夠通過度娘,谷歌等方式一一解決。本人因為能力有限,有不足或錯誤之處,希望能夠被指出。
最后再次填上這個的代碼地址:https://github.com/lunaMoon1010/SeleniumDemo
如果要詳細怎么使用請訪問:http://www.webdriver.org/nav1/