selenium + ChromeDriver


    Selenium是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。而對於爬蟲來說,使用Selenium操控瀏覽器來爬取網上的數據那么肯定是爬蟲中的殺手武器。這里,我將介紹selenium + 谷歌瀏覽器的一般使用。首先會介紹如何安裝部署環境,然后貼出一些本人所使用的一些方法,最后給出github地址,供大家下載。


1. selenium 環境配置

selenium 官網地址:http://www.seleniumhq.org/download/
導入 selenium 的 jar 包有多種方式,這里介紹兩個:  
第一種是直接下載,然后將下載中的 jar 包復制到eclipse或者idea中,然后添加即可

   
 
第二種是使用maven
 

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/
 
 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM