中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站建設(shè)計(jì)劃網(wǎng)絡(luò)營(yíng)銷(xiāo)有什么崗位

網(wǎng)站建設(shè)計(jì)劃,網(wǎng)絡(luò)營(yíng)銷(xiāo)有什么崗位,想做一個(gè)賭錢(qián)網(wǎng)站怎么做,外貿(mào)網(wǎng)站建設(shè)價(jià)格目錄 前言 一、Web 自動(dòng)化測(cè)試 1.什么是 Web 自動(dòng)化測(cè)試 2.驅(qū)動(dòng) 3.安裝驅(qū)動(dòng)管理 二、Selenium 1.簡(jiǎn)單 web 自動(dòng)化測(cè)試示例 2.工作原理 三、元素定位 1.cssSelector 2.XPath 四、操作測(cè)試對(duì)象 1.點(diǎn)擊/提交對(duì)象 2.模擬按鍵輸入 3.清除文本內(nèi)容 4.獲取文本信息 5.…

目錄

·前言

一、Web 自動(dòng)化測(cè)試

1.什么是 Web 自動(dòng)化測(cè)試

2.驅(qū)動(dòng)

3.安裝驅(qū)動(dòng)管理

二、Selenium

1.簡(jiǎn)單 web 自動(dòng)化測(cè)試示例

2.工作原理

三、元素定位

1.cssSelector

2.XPath

四、操作測(cè)試對(duì)象

1.點(diǎn)擊/提交對(duì)象

2.模擬按鍵輸入

3.清除文本內(nèi)容

4.獲取文本信息

5.獲取當(dāng)前頁(yè)面標(biāo)題

6.獲取當(dāng)前頁(yè)面的 URL

·總結(jié)


·前言

? ? ? ? 自動(dòng)化是指自動(dòng)的代替人的行為完成操作,自動(dòng)化在生活中可以說(shuō)是隨處可見(jiàn),如:自動(dòng)灑水機(jī)、自動(dòng)洗手液等,這些生活中的自動(dòng)案例有效的減少了我們?nèi)肆Φ南?#xff0c;同時(shí)也提高了我們的生活質(zhì)量,在我們軟件中的自動(dòng)化測(cè)試也是如此,通過(guò)自動(dòng)化測(cè)試可以有效減少人力的消耗,同時(shí)提高測(cè)試的質(zhì)量和效率,本篇文章將會(huì)介紹自動(dòng)化測(cè)試的一些基礎(chǔ)知識(shí),和一些自動(dòng)化測(cè)試中常用的函數(shù),那么就開(kāi)始本篇文章的內(nèi)容介紹吧。

一、Web 自動(dòng)化測(cè)試

? ? ? ? 自動(dòng)化也分為接口自動(dòng)化和 UI 自動(dòng)化,其中,UI 自動(dòng)化還可以分為 Web 自動(dòng)化、移動(dòng)端自動(dòng)化等,在我們下面的內(nèi)容介紹都是在介紹 Web 自動(dòng)化測(cè)試。

1.什么是 Web 自動(dòng)化測(cè)試

? ? ? ? 比如在我們使用 CSDN 進(jìn)行搜索時(shí),通常需要我們先輸入 CSDN 的網(wǎng)址進(jìn)入 CSDN 界面,然后找到搜索框,輸入我們要搜索的信息來(lái)進(jìn)行搜索,如下圖所示:

? ? ? ? Web 自動(dòng)化就可以代替我們自動(dòng)的執(zhí)行以上的過(guò)程,Web 自動(dòng)化測(cè)試就是模擬人在瀏覽器上的操作行為,自動(dòng)的打開(kāi)瀏覽器,訪問(wèn) CSDN 首頁(yè),并進(jìn)行一系列的搜索和驗(yàn)證等行為。?

2.驅(qū)動(dòng)

? ? ? ? 上面介紹了 Web 自動(dòng)化測(cè)試的第一步是要打開(kāi)瀏覽器,通過(guò)訪問(wèn)瀏覽器界面進(jìn)行一系列的操作,對(duì)于我們手工測(cè)試來(lái)說(shuō),這一系列的操作需要我們手動(dòng)的,一步一步的來(lái)執(zhí)行,對(duì)于我們自動(dòng)化程序來(lái)說(shuō),我們編寫(xiě)的自動(dòng)化程序又要如何打開(kāi)我們的瀏覽器并執(zhí)行我們預(yù)期的操作流程呢?這就需要說(shuō)到驅(qū)動(dòng)了。

? ? ? ? 驅(qū)動(dòng)這詞應(yīng)用比較廣泛,比如汽車(chē),就是有了驅(qū)動(dòng)才能跑起來(lái)的,在我們計(jì)算機(jī)上也是這樣,計(jì)算機(jī)有了驅(qū)動(dòng)程序才能與設(shè)備(如:耳機(jī)、攝像頭、麥克風(fēng)、鍵盤(pán)、顯示器、鼠標(biāo)等)進(jìn)行通信,我們要想使我們編寫(xiě)的自動(dòng)化程序打開(kāi) Web 瀏覽器與瀏覽器進(jìn)行通信,也就需要安裝 Web 驅(qū)動(dòng)程序(即:WebDriver),WebDriver 是以本地化的方式驅(qū)動(dòng)瀏覽器的驅(qū)動(dòng)程序。? ? ?

3.安裝驅(qū)動(dòng)管理

? ? ? ? 介紹完什么是驅(qū)動(dòng),及 WebDriver 后,我們就來(lái)安裝一下 Web 驅(qū)動(dòng)程序吧,在 Java 中,有一個(gè)開(kāi)源的庫(kù):WebDriverManager,它是以完全自動(dòng)化的方式對(duì) Selenium WebDriver 所需的驅(qū)動(dòng)程序(如:Chromedriver、geckodriver等)進(jìn)行管理(即:下載、設(shè)置、維護(hù)),既然 Java 中提供了這樣開(kāi)源的庫(kù),那么我們安裝驅(qū)動(dòng)管理就十分簡(jiǎn)單了,只需要?jiǎng)?chuàng)建一個(gè)項(xiàng)目,使用 Maven 來(lái)管理,添加依賴(lài),把 WebDriverManager 引入即可,添加依賴(lài)代碼如下:

        <dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.8.0</version><scope>test</scope></dependency>

二、Selenium

? ? ? ? 進(jìn)行完上述的工作后,接下來(lái)就是使用 Selenium 來(lái)編寫(xiě) Web 自動(dòng)化測(cè)試腳本了,Selenium 是一個(gè) Web 自動(dòng)化測(cè)試工具,Selenium 中提供了豐富的方法供給我們來(lái)進(jìn)行 Web 自動(dòng)化測(cè)試。

1.簡(jiǎn)單 web 自動(dòng)化測(cè)試示例

? ? ? ? 在編寫(xiě)代碼之前,我們要先安裝 Selenium 庫(kù),這也是 Java 中一個(gè)開(kāi)源的庫(kù),所以我們之間在 pom.xml 中添加依賴(lài)即可,添加依賴(lài)代碼如下:

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

? ? ? ? 下面我們就來(lái)利用 Selenium 編寫(xiě)一段簡(jiǎn)單的 Web 自動(dòng)化測(cè)試的代碼,這里我們要做的事情是:打開(kāi)瀏覽器,使用百度搜索彭于晏,具體的代碼及詳細(xì)介紹如下所示:?

public class Test {// 測(cè)試百度搜索關(guān)鍵詞: 彭于晏void searchTest() throws InterruptedException {// 1. 創(chuàng)建驅(qū)動(dòng)對(duì)象, 打開(kāi)瀏覽器WebDriverManager.chromedriver().setup();// 2.增加瀏覽器配置, 創(chuàng)建驅(qū)動(dòng)對(duì)象要強(qiáng)制指定允許訪問(wèn)所有鏈接ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");WebDriver webDriver = new ChromeDriver(options);// 3. 輸入完整的網(wǎng)址: https:www.baidu.comwebDriver.get("https://www.baidu.com/");// 4. 找到輸入框, 并輸入關(guān)鍵詞: 彭于晏webDriver.findElement(By.cssSelector("#kw")).sendKeys("彭于晏");// 休眠 3 秒,觀察效果Thread.sleep(3000);// 5. 找到 "百度一下" 按鈕, 并點(diǎn)擊webDriver.findElement(By.cssSelector("#su")).click();// 休眠 3 秒,觀察效果Thread.sleep(3000);// 6. 關(guān)閉瀏覽器webDriver.quit();}
}

? ? ? ? 我們使用 Test 類(lèi)來(lái)編寫(xiě)測(cè)試方法,額外再創(chuàng)建一個(gè) RunTest 類(lèi)來(lái)運(yùn)行我們的測(cè)試方法,代碼及運(yùn)行結(jié)果如下所示:?

public class RunTest {public static void main(String[] args) throws InterruptedException {Test test = new Test();test.searchTest();}
}

? ? ? ? 上述執(zhí)行過(guò)程中,我鼠標(biāo)只進(jìn)行點(diǎn)擊運(yùn)行的操作,剩下都是自動(dòng)化程序自動(dòng)幫我們做的事。?

2.工作原理

? ? ? ? 實(shí)現(xiàn) Web 自動(dòng)化測(cè)試需要瀏覽器、瀏覽器驅(qū)動(dòng)、Selenium 自動(dòng)化腳本,這三者是如何交互最終實(shí)現(xiàn) Web 的自動(dòng)化測(cè)試的呢?如下圖所示:

?????????具體步驟如下:

  1. 通過(guò) Selenium 編寫(xiě)的自動(dòng)化腳本代碼中在 ChromeDriverService 中創(chuàng)建一個(gè)服務(wù);
  2. 通過(guò)創(chuàng)建好的服務(wù)打開(kāi) WebDriver,該服務(wù)地址為 Selenium 向 WebDriver 發(fā)送請(qǐng)求的服務(wù)地址;
  3. 向?yàn)g覽器驅(qū)動(dòng)程序發(fā)送 HTTP 請(qǐng)求,瀏覽器驅(qū)動(dòng)程序解析請(qǐng)求,打開(kāi)瀏覽器,并獲得 sessionid,如果再次對(duì)瀏覽器操作需要攜帶此 id;
  4. 打開(kāi)瀏覽器后,所有的 Selenium 的操作(如:訪問(wèn)地址、查找元素等)均通過(guò)創(chuàng)建好的服務(wù)連接到 WebDriver,然后使用 execute 發(fā)送請(qǐng)求;
  5. 驅(qū)動(dòng)收到請(qǐng)求并對(duì)請(qǐng)求進(jìn)行解析,轉(zhuǎn)成瀏覽器能夠解析的腳步并發(fā)送給瀏覽器,瀏覽器通過(guò)請(qǐng)求的內(nèi)容執(zhí)行對(duì)應(yīng)動(dòng)作;
  6. 瀏覽器再把執(zhí)行的動(dòng)作結(jié)果通過(guò)瀏覽器驅(qū)動(dòng)程序返回給測(cè)試腳本。

? ? ? ? ?在我們剛才執(zhí)行的 Selenium 編寫(xiě)的自動(dòng)化腳本代碼中,我們可以在終端看見(jiàn)創(chuàng)建的驅(qū)動(dòng)服務(wù)地址,如下圖所示:

三、元素定位

? ? ? ? 我們?cè)谶M(jìn)行 Web 自動(dòng)化測(cè)試的操作核心就是能夠找到頁(yè)面對(duì)應(yīng)的元素,然后才能對(duì)元素進(jìn)行具體的操作。常見(jiàn)的元素定位方式有很多,如:id、classname、tagname、XPath、cssSelector,其中常用的主要是 cssSelector 和 XPath。

1.cssSelector

? ? ? ? 選擇器的功能是選中頁(yè)面中指定的標(biāo)簽元素,選擇器的種類(lèi)分為基礎(chǔ)選擇器和復(fù)合選擇器,常見(jiàn)的元素定位方式可以通過(guò) id 選擇器和子類(lèi)選擇器來(lái)進(jìn)行定位,我們上面編寫(xiě)的自動(dòng)化測(cè)試代碼中是如何定位到搜索框與“百度一下”按鈕的呢?定位的過(guò)程如下圖所示:

? ? ? ? Copy 之后,我們就可以定位到搜索框的位置了,如下圖所示:

? ? ? ? 此時(shí)我們就可以在編寫(xiě)自動(dòng)化測(cè)試代碼中使用 “#kw” 來(lái)定位搜索框的元素,并對(duì)其進(jìn)行相應(yīng)的操作了。?

2.XPath

? ? ? ? 介紹完 cssSelector 定位元素的方式后,其實(shí) XPath 做的事情也是一樣的,XPath 是 XML 路徑語(yǔ)言,不僅可以在 XML 文件中查找信息,還可以在 HTML 中選取節(jié)點(diǎn),XPath 使用路徑表達(dá)式來(lái)選擇 XML 文檔中的節(jié)點(diǎn),在 XPath 語(yǔ)法中, “//*” 是獲取 HTML 頁(yè)面所有的節(jié)點(diǎn),如下圖所示:

? ? ? ? 使用 //[指定節(jié)點(diǎn)] 來(lái)獲取?HTML 頁(yè)面指定的節(jié)點(diǎn),如下圖所示:

? ? ? ? 使用 / 來(lái)獲取一個(gè)節(jié)點(diǎn)中的直接子節(jié)點(diǎn),如下圖所示:

? ? ? ? 使用 [@....] ,可以實(shí)現(xiàn)節(jié)點(diǎn)屬性的匹配,如下圖所示:

? ? ? ? 當(dāng)然,XPath 也可以使用 cssSelector 中的方式來(lái)更便捷的生成,如下圖所示:

? ? ? ? 手動(dòng)復(fù)制的 selector / XPath 的表達(dá)式不一定滿足唯一性的要求,即:復(fù)制的表達(dá)式會(huì)對(duì)應(yīng)不同的多個(gè)元素,這時(shí)就需要我們進(jìn)行手動(dòng)修改表達(dá)式,使它可以唯一定位一個(gè)元素,這就需要用到我們前面介紹的內(nèi)容了。?

四、操作測(cè)試對(duì)象

? ? ? ? 獲取到了頁(yè)面的元素之后,我們就可以對(duì)元素進(jìn)行操作了,這里我們常見(jiàn)的操作有:點(diǎn)擊、提交、輸入、清空、獲取文本。

1.點(diǎn)擊/提交對(duì)象

? ? ? ? 這里我們使用的函數(shù)是 click(),具體使用代碼如下所示:

// 找到 "百度一下" 按鈕, 并點(diǎn)擊
driver.findElement(By.cssSelector("#su")).click();

2.模擬按鍵輸入

? ? ? ? 這里我們使用的函數(shù)是 sendKeys(""),具體使用的代碼如下所示:

// 找到輸入框, 并輸入關(guān)鍵詞: 彭于晏
driver.findElement(By.cssSelector("#kw")).sendKeys("彭于晏");

3.清除文本內(nèi)容

? ? ? ? 當(dāng)我們搜索完一條信息后,想要再換一個(gè)關(guān)鍵詞搜索,直接調(diào)用?sendKeys("") 函數(shù)可以嗎?我們來(lái)編寫(xiě)代碼運(yùn)行一下觀察結(jié)果,具體代碼及運(yùn)行結(jié)果如下所示:

public class Test {WebDriver driver;void createDriver() {// 1. 創(chuàng)建驅(qū)動(dòng)對(duì)象, 打開(kāi)瀏覽器WebDriverManager.chromedriver().setup();// 2. 增加瀏覽器配置, 創(chuàng)建驅(qū)動(dòng)對(duì)象要強(qiáng)制指定允許訪問(wèn)所有鏈接ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");driver = new ChromeDriver(options);// 3. 輸入完整的網(wǎng)址: https:www.baidu.comdriver.get("https://www.baidu.com/");}// 操作元素void test03() throws InterruptedException {createDriver();WebElement element = driver.findElement(By.cssSelector("#kw"));element.sendKeys("彭于晏");Thread.sleep(3000);element.sendKeys("古力娜扎");Thread.sleep(3000);driver.quit();}}

? ? ? ? 可以通過(guò)上面運(yùn)行過(guò)程可以看出,?想換一個(gè)關(guān)鍵詞進(jìn)行搜索直接使用?sendKeys("") 函數(shù)的效果就是直接在原本的關(guān)鍵詞后面拼接新關(guān)鍵詞,這顯然是不科學(xué)的,那么為了可以正確的切換搜索內(nèi)容,我們就要使用到 clear() 函數(shù),來(lái)清空我們先前搜索框的內(nèi)容,再使用?sendKeys("") 來(lái)進(jìn)行搜索,具體代碼及運(yùn)行結(jié)果如下:

    void test03() throws InterruptedException {createDriver();WebElement element = driver.findElement(By.cssSelector("#kw"));element.sendKeys("彭于晏");Thread.sleep(3000);element.clear();element.sendKeys("古力娜扎");Thread.sleep(3000);driver.quit();}

4.獲取文本信息

? ? ? ? 如何判斷獲取到的元素對(duì)應(yīng)的文本是否符合預(yù)期呢?我們可以使用 getText() 函數(shù)來(lái)把獲取元素對(duì)應(yīng)的文本信息進(jìn)行打印,來(lái)觀察,具體使用代碼及運(yùn)行結(jié)果如下所示:

public class Test {WebDriver driver;void createDriver() {// 1. 創(chuàng)建驅(qū)動(dòng)對(duì)象, 打開(kāi)瀏覽器WebDriverManager.chromedriver().setup();// 2. 增加瀏覽器配置, 創(chuàng)建驅(qū)動(dòng)對(duì)象要強(qiáng)制指定允許訪問(wèn)所有鏈接ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");driver = new ChromeDriver(options);// 3. 輸入完整的網(wǎng)址: https:www.baidu.comdriver.get("https://www.baidu.com/");}// 獲取文本信息void test04() {createDriver();WebElement element = driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(4) > a > span.title-content-title"));System.out.println("元素文本信息為: " + element.getText());driver.quit();}
}

? ? ? ? 如上圖所示,獲取文本信息正確。

? ? ? ? 這里我們要注意一點(diǎn),頁(yè)面上展示的數(shù)據(jù)不全是文本數(shù)據(jù),比如 “百度一下” 按鈕上的文字,如下圖所示:? ? ? ? 此時(shí)使用?getText() 函數(shù)是無(wú)法獲取到的,操作代碼及運(yùn)行結(jié)果如下所示:

    void test04() throws InterruptedException {createDriver();WebElement element = driver.findElement(By.cssSelector("#su"));System.out.println("獲取百度一下按鈕的文本信息: " + element.getText());driver.quit();}

? ? ? ? 顯然沒(méi)有獲取到信息,那么如何獲取屬性信息呢?這就需要使用 getAttribute("屬性名稱(chēng)") 函數(shù)來(lái)獲取了,具體代碼及運(yùn)行結(jié)果如下所示:

void test04() throws InterruptedException {createDriver();WebElement element = driver.findElement(By.cssSelector("#su"));System.out.println("獲取百度一下按鈕的 value 屬性值: " + element.getAttribute("value"));driver.quit();}

5.獲取當(dāng)前頁(yè)面標(biāo)題

? ? ? ? 這里我們使用的函數(shù)是 getTitle(),具體使用代碼如下所示:

// 獲取當(dāng)前頁(yè)面標(biāo)題
driver.getTitle();

6.獲取當(dāng)前頁(yè)面的 URL

? ? ? ? 這里我們使用的函數(shù)是 getCurrentUrl(),具體使用代碼如下所示:

// 獲取當(dāng)前頁(yè)面的 URL
driver.getCurrentUrl();

? ? ? ? 關(guān)于函數(shù)??getTitle() 與?getCurrentUrl() 的具體使用代碼及運(yùn)行結(jié)果如下所示:

    void test04() throws InterruptedException {createDriver();System.out.println(driver.getTitle());System.out.println(driver.getCurrentUrl());driver.quit();}

·總結(jié)

? ? ? ? 文章到這里就要結(jié)束了,本篇文章介紹了一下自動(dòng)化測(cè)試的基本概念,與一些在 Selenium 中進(jìn)行自動(dòng)化測(cè)試腳本編寫(xiě)使用的常見(jiàn)函數(shù),文章作為自動(dòng)化測(cè)試的第一篇文章主要是想帶大家認(rèn)識(shí)一下自動(dòng)化測(cè)試,并感受一下自動(dòng)化測(cè)試的效果,如果對(duì)文章內(nèi)容有所疑惑,歡迎在評(píng)論區(qū)進(jìn)行留言,如果感覺(jué)本篇文章還不錯(cuò)希望能收到你的三連支持,那么我們下一篇文章再見(jiàn)吧~~~

http://www.risenshineclean.com/news/32830.html

相關(guān)文章:

  • 做網(wǎng)站論文網(wǎng)絡(luò)營(yíng)銷(xiāo)的模式有哪些?
  • 做二手車(chē)網(wǎng)站怎么做的外貿(mào)軟件排行榜
  • 網(wǎng)站建設(shè)倒計(jì)時(shí)模板推廣引流圖片
  • 網(wǎng)站開(kāi)發(fā)使用哪種語(yǔ)言免費(fèi)網(wǎng)站站長(zhǎng)查詢(xún)
  • 個(gè)人做網(wǎng)站如何賺錢(qián)嗎百度客服電話人工服務(wù)熱線電話
  • 北京市網(wǎng)站建設(shè)百度搜索推廣怎么做
  • 青島開(kāi)發(fā)區(qū)網(wǎng)站建設(shè)公司汽車(chē)seo是什么意思
  • 網(wǎng)站建設(shè)與網(wǎng)頁(yè)設(shè)計(jì)如何優(yōu)化百度seo排名
  • 魚(yú)滑怎么制作教程搜索引擎優(yōu)化seo的英文全稱(chēng)是
  • 施工效果圖怎么做關(guān)鍵詞搜索優(yōu)化
  • 江蘇做網(wǎng)站公司東莞整站優(yōu)化推廣公司找火速
  • 個(gè)人電腦做網(wǎng)站服務(wù)器教程制作一個(gè)app軟件需要多少錢(qián)
  • 利辛做網(wǎng)站搜索引擎關(guān)鍵詞怎么選
  • php怎么建立站點(diǎn)下載百度語(yǔ)音導(dǎo)航地圖安裝
  • 如何更新網(wǎng)站緩存濟(jì)南網(wǎng)絡(luò)優(yōu)化廠家
  • 網(wǎng)站中鏈接怎么做推廣網(wǎng)站公司
  • 網(wǎng)站開(kāi)發(fā)進(jìn)度管理表谷歌seo工具
  • 太原網(wǎng)站建設(shè)費(fèi)用上首頁(yè)seo
  • 網(wǎng)站一般寬度windows優(yōu)化大師有哪些功能
  • 國(guó)內(nèi) 設(shè)計(jì)網(wǎng)站的公司網(wǎng)站3000行業(yè)關(guān)鍵詞
  • 手機(jī)網(wǎng)站開(kāi)發(fā)教程?hào)|莞做網(wǎng)站哪家公司好
  • 網(wǎng)站有沒(méi)有做網(wǎng)站地圖怎么看今天國(guó)際新聞大事
  • 想做一個(gè)自己設(shè)計(jì)公司的網(wǎng)站怎么做的網(wǎng)站推廣公司電話
  • 電腦做系統(tǒng)網(wǎng)站鄭州網(wǎng)站優(yōu)化培訓(xùn)
  • 軟件工程師是程序員嗎電腦優(yōu)化工具
  • 建設(shè)一個(gè)大型網(wǎng)站大概費(fèi)用磁力王
  • 主流門(mén)戶(hù)網(wǎng)站百度關(guān)鍵詞搜索推廣
  • 怎樣設(shè)計(jì)網(wǎng)頁(yè)教程關(guān)鍵詞優(yōu)化外包
  • 鄭州電力高等專(zhuān)科學(xué)校哪個(gè)專(zhuān)業(yè)好重慶seo和網(wǎng)絡(luò)推廣
  • 可視化網(wǎng)站制作軟件站長(zhǎng)之家ppt素材