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

第二種是使用maven


2. 下載github代碼并且進(jìn)行測試
谷歌瀏覽使用的版本是:60.0.3112.78,這里注意,谷歌瀏覽器和谷歌驅(qū)動需要匹配。
具體可以見:http://www.dhdzp.com/article/151629.htm

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

導(dǎo)入項目
1、解壓后,使用idea導(dǎo)入該項目

2、選擇剛剛解壓的項目

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

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

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

3、測試點擊
/**
* 測試點擊
*/
@Test
public void testScrollToElementAndClick() throws Exception {
//1、開啟個瀏覽器并且輸入鏈接
WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/");
//2、向百度輸入框輸入需要查詢的值
PageUtils.inputStrByJS(driver, "kw", "月之暗面 博客園");
//3、得到百度一下的標(biāo)簽
WebElement submitElement = driver.findElement(By.cssSelector("input#su"));
//4、點擊百度一下
PageUtils.scrollToElementAndClick(submitElement, driver);
//休息3秒,加載數(shù)據(jù)
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);
}
如果出現(xiàn)下面情況,說明測試成功了

4、測試標(biāo)簽頁切換
/**
* 測試切換到另一個標(biāo)簽頁
*/
@Test
public void testGetAnotherPage() throws Exception {
//1、開啟個瀏覽器并且輸入鏈接
WebDriver driver = PageUtils.getChromeDriver("https://www.baidu.com/");
//2、向百度輸入框輸入需要查詢的值
PageUtils.inputStrByJS(driver, "kw", "月之暗面 博客園");
//3、得到百度一下的標(biāo)簽
WebElement submitElement = driver.findElement(By.cssSelector("input#su"));
//4、點擊百度一下
PageUtils.scrollToElementAndClick(submitElement, driver);
//休息3秒,加載數(shù)據(jù)
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、當(dāng)前頁面時百度的頁面
//將瀏覽器對象強制轉(zhuǎn)為可以執(zhí)行js的對象
System.out.println("現(xiàn)在的頁面是:"+driver.getTitle());
//9、切換到博客園頁面
PageUtils.getAnotherPage(driver);
//將瀏覽器對象強制轉(zhuǎn)為可以執(zhí)行js的對象
System.out.println("現(xiàn)在的頁面是:"+driver.getTitle());
}
如果出現(xiàn)下面的情況說明你測試成功了

3.總結(jié)
Selenium是一個用于Web應(yīng)用程序測試的工具。但是也可以用來做爬蟲,如果需要得到對應(yīng)的數(shù)據(jù),可以通過 element.getText()的方法得到,element的類型是WebElement。期間可能會有很多錯誤,但是希望大家能夠通過度娘,谷歌等方式一一解決。本人因為能力有限,有不足或錯誤之處,希望能夠被指出。
最后再次填上這個的代碼地址:https://github.com/lunaMoon1010/SeleniumDemo
如果要詳細(xì)怎么使用請訪問:http://www.webdriver.org/nav1/
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用迭代器模式來進(jìn)行Java的設(shè)計模式編程
這篇文章主要介紹了使用迭代器模式來進(jìn)行Java的設(shè)計模式編程,文中對迭代器模式中的容器封裝方面的知識進(jìn)行了講解,需要的朋友可以參考下2016-02-02
一文詳解Java?Condition的await和signal等待通知機制
這篇文章主要為大家詳細(xì)介紹了Java?Condition的await和signal等待通知機制的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2025-02-02
Java數(shù)據(jù)導(dǎo)出功能之導(dǎo)出Excel文件實例
這篇文章主要介紹了Java數(shù)據(jù)導(dǎo)出功能之導(dǎo)出Excel文件實例,本文給出了jar包的下載地址,并給出了導(dǎo)出Excel文件代碼實例,需要的朋友可以參考下2015-06-06
Spring JPA學(xué)習(xí)之delete方法示例詳解
這篇文章主要為大家介紹了Spring JPA學(xué)習(xí)delete方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Spring?Boot實現(xiàn)消息的發(fā)送和接收使用實戰(zhàn)指南
這篇文章主要為大家介紹了Spring?Boot實現(xiàn)消息的發(fā)送和接收使用實戰(zhàn)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Spring實現(xiàn)一個簡單的SpringIOC容器
本篇文章主要介紹了Spring實現(xiàn)一個簡單的SpringIOC容器,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04
關(guān)于PreparedStatement的setObject作用及說明
這篇文章主要介紹了關(guān)于PreparedStatement的setObject作用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03

