国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java自動化-selenium

這篇具有很好參考價值的文章主要介紹了Java自動化-selenium。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、準備

最近在學習寫自動化控件,自動化腳本開發(fā)。可能會需要學到的知識,提前了解一下:
idea,maven,谷歌驅(qū)動,網(wǎng)絡
個人建議使用maven自動導入,因為需要的依賴包確實不少。

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

二、selenium介紹

Selenium是一個Web的自動化測試工具,最初是為網(wǎng)站自動化測試而開發(fā)的,
Selenium可以直接運行在瀏覽器上,它支持所有主流的瀏覽器(包括
PhantomJS這些無界面的瀏覽器(2018年開發(fā)者說暫停開發(fā),
chromedriver也可以實現(xiàn)同樣的功能),可以接收指令,
讓瀏覽器自動加載頁面,獲取需要的數(shù)據(jù),甚至頁面截屏。

三、什么是抓取技術

個人通俗的理解就是:模擬人的行為去各個網(wǎng)站溜達,點點按鈕,查查數(shù)據(jù),或者把看到的信息背回來。就像一只蜘蛛在一幢樓里不知疲倦地爬來爬去。

四、爬蟲協(xié)議

路邊的野花不要踩,如果你控制不住,你偏要踩,小心回家跪搓衣板。

那么爬蟲也是一樣,很多系統(tǒng)是很討厭爬蟲的,它們希望自己的業(yè)務數(shù)據(jù)不被竊取,而爬蟲違背了它們利益。但并不是所有的網(wǎng)站都討厭爬蟲,因為很多網(wǎng)站做SEO,它們希望被搜索引擎收錄,被爬蟲主流搜索引擎的爬蟲抓取。

比如: www.hao123.com ,我們觀察它的爬蟲協(xié)議( https://www.hao123.com/robots.txt ) 就能看出它允許部分(百度、谷歌、有道、搜狗、搜搜)等爬蟲對他進行蹂躪。其他的爬蟲它一律不允許。

User-agent: Baiduspider
Allow: /

User-agent: Baiduspider-image
Allow: /

User-agent: Baiduspider-video
Allow: /

User-agent: Baiduspider-news
Allow: /

User-agent: Googlebot
Allow: /

User-agent: MSNBot
Allow: /

User-agent: YoudaoBot
Allow: /

User-agent: Sogou web spider
Allow: /

User-agent: Sogou inst spider
Allow: /

User-agent: Sogou spider2
Allow: /

User-agent: Sogou blog
Allow: /

User-agent: Sogou News Spider
Allow: /

User-agent: Sogou Orion spider
Allow: /

User-agent: JikeSpider
Allow: /

User-agent: Sosospider
Allow: /

User-agent: *
Disallow: /

如何查看爬蟲協(xié)議:在網(wǎng)站根域名下,一般會放一個robots.txt文件,文件中會清楚的描述哪些允許,哪些不允許。

五、Jsoup實現(xiàn)簡單爬蟲

Jsoup是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內(nèi)容。

它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。

總之,如果對HTML頁面很了解的話,是可以很容易的用Jsoup來抓取頁面的信息的。

1、分析頁面元素

通過瀏覽器打開“開發(fā)者調(diào)試工具” 通過選擇器審查頁面元素,按照盒子模型思維分析頁面元素信息,如下圖所示:

頁面元素定位路徑:coolsites_wrapper->cool-row-> href

Jsoup 實現(xiàn)簡單爬蟲 源代碼入下:

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.helper.StringUtil;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Jsoup 實現(xiàn)
 */
public class Spider {
    static List<LinkEntity> stores = new ArrayList<>();
    public static void main(String[] args) {
        //1、與目標服務建立連接  
        Connection connection = Jsoup.connect("https://www.***.com/");
        connection.header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36");
        try {
            // 2、執(zhí)行請求、解析結果  
            Document document = connection.get();
            Element element = document.getElementById("coolsites_wrapper");
            // 3、定位到->"酷站列表"  
            Elements elements = element.getElementsByClass("cool-row");
            Iterator iterator = elements.iterator();
            while (iterator.hasNext()) {
                Element ulElement = (Element) iterator.next();
                // 4、獲取當前盒子模型下<a>標簽列表  
                Elements links = ulElement.getElementsByTag("a");
                Iterator iteratorLinks = links.iterator();
                // 5、迭代遍歷超鏈接列表  
                while (iteratorLinks.hasNext()) {
                    Element items = (Element) iteratorLinks.next();
                    String text = items.text();
                    String attribute = items.select("a").attr("href");
                    if (StringUtil.isBlank(attribute) || StringUtil.isBlank(text)) {
                        continue;
                    }
                    stores.add(new LinkEntity(text, attribute));
                }
            }
            // 6、遍歷爬取的結果(此處只做演示,不做任何存儲操作)  
            stores.parallelStream().forEach(item -> {
                System.out.println(item.getName() + " -> " + item.getUrl());
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class LinkEntity {
    private String name;
    private String url;
    public LinkEntity(String name, String url) {
        this.name = name;
        this.url = url;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
} 

2、Jsoup爬蟲技術實現(xiàn)思路

①、得到自己想要爬取數(shù)據(jù)的url,與服務器建立鏈接

②、通過Jsoup的jar包中的方法將Html解析成Document

③、使用Document中的一些列get、first、children等方法獲取自己想要的數(shù)據(jù),如圖片地址、名稱、時間。

④、將得到的數(shù)據(jù)封裝成自己的實體類。將實體中的數(shù)據(jù)在頁面加載出來。

3、Jsoup爬蟲框架的不足

只有html元素有的情況下,才能通過jsoup來爬蟲,如果是這接口獲得的數(shù)據(jù),那么通過jsoup是無法獲取到的。

六、Selenium自動化測試+爬蟲

Selenium 是一款自動化測試框架,支持多種主流的開發(fā),對各種開發(fā)語言提供了豐富的API,通過API你可以快速定位頁面元素,模擬用戶點擊,滑動,翻頁,截屏等一系列操作。

它可模擬用戶真實操作行為,并且是基于真實瀏覽器運行環(huán)境,所以在自動化測試中受到了很多測試同學的青睞。

Selenium 實現(xiàn)自動化測試 源代碼入下:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
 * 使用Java+Selenium 自動框架實現(xiàn)
 */
public class SeleniumSpider {
    private static ChromeOptions initChromeOptions(){
        ChromeOptions options = new ChromeOptions();  
        /* 
            // 啟動時自動最大化窗口 
            options.addArguments("--start-maximized"); 
            // 禁用阻止彈出窗口 
            options.addArguments("--disable-popup-blocking"); 
            // 啟動無沙盒模式運行 
            options.addArguments("no-sandbox"); 
            // 禁用擴展 
            options.addArguments("disable-extensions"); 
            // 默認瀏覽器檢查 
            options.addArguments("no-default-browser-check"); 
            // 設置chrome 無頭模式 
            options.setHeadless(Boolean.TRUE); 
            //不用打開圖形界面。 
            options.addArguments("--headless"); 
        */
        options.setBinary("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe");
        return options;
    }
    private static WebDriver initWebDriver (ChromeOptions options){
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.manage().window().maximize();
        webDriver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
        return webDriver;
    }
    public static void main(String [] args){
        // 1、設置chrome瀏覽器驅(qū)動  
        System.setProperty("webdriver.chrome.driver", "D:\\tools\\chromedriver_win32\\chromedriver.exe");
        // 2、設置ChromeOptions  
        ChromeOptions chromeOptions= initChromeOptions();
        // 3、初始化一個瀏覽器實例  
        WebDriver webDriver= initWebDriver(chromeOptions);
        // 4、加載網(wǎng)頁程序(某度)  
        webDriver.get("https://image.baidu.com");
        // 5、通過ID選擇器定位輸入框,并設置搜索關鍵字”帥哥“  
        webDriver.findElement(By.id("kw")).sendKeys("帥哥");
        // 6、通過Class類樣式選擇器定位,模擬點擊事件并提交表單  
        webDriver.findElement(By.className("s_btn")).submit();
        // 7、加載第二個頁面:展示搜索頁面元素信息  
        WebElement webElement = webDriver.findElement(By.id("imgid"));
        // 8、定位搜索到所有圖片元素  
        List<WebElement> imgs= webElement.findElements(By.className("imgbox"));
        // 9、異步獲取圖片地址  
        syncThread(imgs);
        // 10、模擬頁面圖片點擊事件  
        imgs.forEach(images ->{
            images.click();
        });
    }
    public static void syncThread(List<WebElement> imgs){
        Thread thrad = new Thread(new myThread(imgs));
        thrad.start();
    }
}
class myThread implements Runnable {
    List<WebElement> imgs;
    public myThread(List<WebElement> imgs) {
        this.imgs = imgs;
    }
    @Override
    public void run() {
        imgs.forEach(images -> {
            WebElement currentImages = images.findElement(By.className("main_img"));
            String src = currentImages.getAttribute("src");
            System.out.println("圖片地址:->" + src);
            //TODO  
        });
    }
}

Selenium 核心步驟如下:

1、下載對應版本驅(qū)動

2、安裝瀏覽器產(chǎn)品,并定位至瀏覽器運行程序

#  Chrome各版本驅(qū)動的下載地址
http://chromedriver.storage.googleapis.com/index.html
#  Firefox瀏覽器對應各個版本驅(qū)動下載地址:
https://github.com/mozilla/geckodriver/releases/  

3、設置chrome瀏覽器驅(qū)動

4、設置ChromeOptions

5、初始化一個瀏覽器實例

6、加載網(wǎng)頁程序

7、通過ID選擇器定位輸入框,并設置搜索關鍵字”美女“

8、通過Class類樣式選擇器定位,模擬點擊事件并提交表單

9、加載第二個頁面:展示搜索頁面元素信息

10、定位搜索到所有圖片元素

11、異步獲取圖片地址

12、模擬頁面圖片點擊事件

七、小結

selenium能夠執(zhí)行頁面上的js,對于js渲染的數(shù)據(jù)和模擬登陸處理起來非常容易。

使用過程中,selenium由于在獲取頁面的過程中會發(fā)送很多請求,所以效率非常低,所以在很多時候需要酌情使用。文章來源地址http://www.zghlxwxcb.cn/news/detail-764733.html

到了這里,關于Java自動化-selenium的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Java + Selenium + Appium自動化測試

    Java + Selenium + Appium自動化測試

    一、啟動測試機或者Android模擬器(Genymotion俗稱世界上最快的模擬器,可自行百度安裝) 二、啟動Appium(Appium環(huán)境安裝可自行百度) 三、安裝應用到Genymotion上,如下圖我安裝一個計算機的小應用,包名為CalcTest.apk 安裝步驟:(基于Android SDK已經(jīng)配置好了環(huán)境變量,可自行百

    2024年02月07日
    瀏覽(25)
  • 【教程】JAVA + selenium 進行自動化測試

    自動登錄淘寶 獲取請求響應數(shù)據(jù)等 使用到的工具類

    2024年02月11日
    瀏覽(24)
  • 【測試開發(fā)之路】Java & Selenium自動化

    1、Selenium介紹 ? 使用前需要下載瀏覽器對應的Driver,Selenium提供了EdgeDriver和ChromiumDriver兩種驅(qū)動類。需要安裝與本機瀏覽器版本相同的驅(qū)動。 ? EdgeDriver下載地址:Microsoft Edge WebDriver - Microsoft Edge Developer ? ChromiumDriver下載地址:CNPM Binaries Mirror (npmmirror.com) 2、導入Maven庫 (

    2024年02月12日
    瀏覽(19)
  • 保姆級自動化測試教程(Selenium+java)

    保姆級自動化測試教程(Selenium+java)

    自動化測試指軟件測試的自動化,在預設狀態(tài)下運行應用程序或者系統(tǒng),預設條件包括正常和異常,最后評估運行結果。將人為驅(qū)動的測試行為轉(zhuǎn)化為機器執(zhí)行的過程。 自動化測試包括 UI自動化 , 接口自動化 , 單元測試自動化 。 單元測試 :最大的投入應該在單元測試上

    2024年02月12日
    瀏覽(21)
  • Java + Selenium + Appium手機自動化測試

    Java + Selenium + Appium手機自動化測試

    一、啟動測試機或者Android模擬器(Genymotion俗稱世界上最快的模擬器,可自行百度安裝) 二、啟動Appium(Appium環(huán)境安裝可自行百度) ? 三、安裝應用到Genymotion上,如下圖我安裝一個計算機的小應用,包名為CalcTest.apk 安裝步驟:(基于Android SDK已經(jīng)配置好了環(huán)境變量,可自行

    2024年02月06日
    瀏覽(26)
  • Selenium 自動化 —— Selenium IDE錄制、回放、導出Java源碼

    Selenium 自動化 —— Selenium IDE錄制、回放、導出Java源碼

    之前我們在專欄的第一篇文章中演示了使用使用Selenium進行百度搜索的Hello world示例。 代碼不復雜非常簡單: 但是對不懂HTML、CSS和Selenium API的同學,可能要編寫一個完整的可運行的Selenium程序還是有一點點難度。 熟悉CSS和花了一點的時間看了我后續(xù)Selenium 系列教程的除外哈。

    2024年03月22日
    瀏覽(19)
  • selenium自動化測試教程——java爬取數(shù)據(jù)

    selenium自動化測試教程——java爬取數(shù)據(jù)

    selenium 是一個用于自動化測試 Web 應用的工具集 ,它可以模擬用戶自動去瀏覽器網(wǎng)頁上進行點擊、輸入、選擇下拉值復選框、鼠標移動、任意 JavaScript 執(zhí)行等等操作。 selenium 有三個產(chǎn)品: Selenium WebDriver:基于瀏覽器的回歸自動化套件和測試,你可以使用 Java、Python、JavaScri

    2024年02月14日
    瀏覽(25)
  • selenium+java自動化測試環(huán)境搭建mac

    selenium+java自動化測試環(huán)境搭建mac

    一、官網(wǎng)下載selenium Downloads | Selenium ?? 下載之后的文件如下 二、下載谷歌瀏覽器驅(qū)動,驅(qū)動版本和瀏覽器版本一致、下面是我的谷歌瀏覽器版本 ?谷歌瀏覽器下載地址 CNPM Binaries Mirror ?下載完成如下:

    2023年04月08日
    瀏覽(16)
  • selenium瀏覽器自動化測試【基于java】

    selenium瀏覽器自動化測試【基于java】

    Selenium 是一個用于Web應用程序的自動化測試工具。它直接運行在瀏覽器中,可以模擬用戶在瀏覽器上面的行為操作。 chrome.exe 默認安裝位置:C:Program FilesGoogleChromeApplicationchrome.exe 結果我的在:C:Users91073AppDataLocalGoogleChromeApplicationchrome.exe 。。。為啥? 下載驅(qū)動 最新

    2024年02月04日
    瀏覽(23)
  • Java+Selenium+Testng自動化學習(一):環(huán)境搭建

    Java+Selenium+Testng自動化學習(一):環(huán)境搭建

    目錄 一、軟件準備及版本介紹? 二、安裝步驟及環(huán)境變量配置:? 2.1? ? Java安裝及配置 2.2? ? IDE工具(Intellij IDEA)安裝 2.3? ? Maven安裝及配置 2.4? ? Maven本地倉庫配置 2.5? ? Intellij IDEA配置mvn倉庫 2.6? ? Intellij IDEA創(chuàng)建maven項目 2.7? ? Selenium安裝 2.8? ? TestNG安裝 2.9? ? Chr

    2024年02月05日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包