精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

初步了解Angular 2端到端的測試

開發(fā) 后端
有許多原因使我過去不愿對自己的應(yīng)用添加自動化測試。原因之一是不知道其中的效益成本比率,另一個原因是考慮到集成到現(xiàn)有生產(chǎn)環(huán)境的應(yīng)用可能比較難。測試應(yīng)用而不用從頭重構(gòu)代碼,僅僅只是引入測試要怎么做呢?

[[176204]]

有許多原因使我過去不愿對自己的應(yīng)用添加自動化測試。原因之一是不知道其中的效益成本比率,另一個原因是考慮到集成到現(xiàn)有生產(chǎn)環(huán)境的應(yīng)用可能比較難。測試應(yīng)用而不用從頭重構(gòu)代碼,僅僅只是引入測試要怎么做呢?

首先我們先從簡單區(qū)分測試的類型開始。應(yīng)用測試有很多類型,但最為常見的是單元測試及端對端測試(亦稱為集成測試)。單元測試是測試代碼自身行為的一種測試。在用戶看來什么也沒有做,但可以確保其方法能達(dá)到期望的目的。集成測試是模仿用戶行為的一種測試。比如說,登陸系統(tǒng),創(chuàng)建帖子,退出系統(tǒng)等這些操作都可以自動化,并且你可以用眼睛看到其過程是怎么發(fā)生的。

 

這兩種類型的測試,它們通常彼此結(jié)合使用。對于新的開發(fā)來說,這將是理想的。如果時間有限制,或繼承于現(xiàn)有項目的情況下,端對端測試或許比單元測試更加合適。因為我們并不需要過多了解先前的代碼庫,同樣可以覆蓋更多場景,這將比單元測試更快,因為單元測試并不測試單個單元而是整個場景。

單元測試依然重要,但如果你必須要在開始的時候選擇一個,我認(rèn)為端對端測試會是更好的選擇。在這篇文章中,我將測試一個現(xiàn)有的Angular 2的待辦事項的項目。我將使用集成測試,并覆蓋一系列的場景。

如果你需要熟悉Angular 2的入門,請看這篇文章 Angular 2 article from Jscrambler

 

被測試的場景

  • 當(dāng)應(yīng)用初始化加載時,有3件待處理的事情
  • 需要加載新待辦事項
  • 點擊一個待辦事項,然后跳到待辦事項的詳細(xì)頁
  • 刪除一個待辦事項
  • 編輯一個待辦事項標(biāo)題,然后保存后,可以在首頁的待辦事項列表中看到新標(biāo)題
  • 不允許保存一個空的待辦事項,在點了禁用的保存按鈕后,待辦事項的列表依然還是原來的總數(shù)
  • 起初加載首頁時,添加新待辦事項的按鈕應(yīng)處于禁用狀態(tài)
  • 保存待辦事項的按鈕僅應(yīng)在輸入待辦事項標(biāo)題后處于編輯狀體

Todo 應(yīng)用程序概述

讓我們簡單的描述一下TODO應(yīng)用程序。應(yīng)用程序?qū)⑹紫仍谥黜撋狭谐龃k事項清單。有三個待辦事項會詳細(xì)列出。

這寫數(shù)據(jù)不會由服務(wù)端提供,而是從設(shè)備文件硬編碼中加載。

在首頁上,我們可以添加新的待辦事項。我們可以通過點擊代辦事項的標(biāo)題來訪問其詳細(xì)信息頁面。在此頁面上,我們可以編輯代辦事項標(biāo)題或刪除待辦事項。

克隆并設(shè)置Todo 應(yīng)用程序

1、首先克隆我已經(jīng)推送到存儲庫這里但未經(jīng)測試的應(yīng)用程序,確保你是在主分支克隆的。接下來,你需要安裝幾個工具以便能進(jìn)行下面的操作,在本教程中,使用Candidate已經(jīng)發(fā)布的Angular 2,版本為2。

2、確保您已安裝NodeJS的版本是Node 4.x.x或更高版本。

3、使用以下命令安裝節(jié)點依賴項:

  1. npm install 

當(dāng)然是在克隆的存儲庫中操作

4.使用Angular-CLI進(jìn)行開發(fā)。安裝Angular-CLI 全局使用下面命令:

  1. npm install -g angular-cli@latest 

5.Angular 2 端到端測試使用被稱為 protractor的工具來運行,安裝protractor 全局使用下面命令:

  1. npm install -g protractor 

6.安裝所有依賴項后,使用以下命令啟動開發(fā)服務(wù)器:

  1. ng serve 

然后導(dǎo)航到瀏覽器地址:http://localhost:4200,您將看到三個待辦事項列表。

如果您在啟動服務(wù)器時遇到問題,您可以參考stackoverflow issue來解決問題。

 

Angular 2測試相關(guān)的重要概念

端對端測試的文件夾在e2e。 其中有一個已預(yù)備好的案列文件,文件名為es2/app.e2e-spec.ts。

其中的測試文件是用 jasmine 框架開發(fā)的。有很多方式模塊化、組織Angular 2端對端測試,但這里為了方便,這篇文章都將在一個文件中進(jìn)行。

我們這個應(yīng)用僅有一個功能那就是待辦事項。為了滿足大家的好奇心或有人在想比上述更復(fù)雜的情況,試想一個需要測試訂單、用戶配置等功能更復(fù)雜的應(yīng)用的場景。對此測試的場景,我將在e2e文件夾中分別為每個待測試功能創(chuàng)建一個文件夾,并將各自測試文件放置其中。

這種情況下,我們將有兩個文件夾分別命名為e2e/orderse2e/userProfile。每個文件夾中僅會有一個測試文件,或者為了滿足更多待測試功能的需要而創(chuàng)建多個測試文件。需要注意的一點是每個測試文件都以word e2e-spec.ts結(jié)尾,這樣Protractor測試工具才可以加載到。

Ok,還是回到我們簡單的單個測試文件。如果你略有查看此文件,你會發(fā)現(xiàn)文件的頭部有個導(dǎo)入聲明(import statement)。導(dǎo)入是聲明若干測試文件中所用的普通函數(shù)是源于哪里。然而這篇文章,我們不會使用這個,而將這個視為函數(shù)庫。

 

在引入聲明(import statement)之后,我們有一個描述性的代碼塊,它的兩個函數(shù)調(diào)用即 beforeEach 和它里面的回調(diào)。

在描述代碼塊內(nèi),每個回調(diào)傳遞給 beforeEach 都需要測試。

每個測試再把里面的回調(diào)函數(shù)傳遞給它。

讓我們用命令運行當(dāng)前的測試

  1. protractor 

如果你在運行 protractor 兩個命令中的一個時有問題,請參考這里。

  1. ./node_modules/protractor/bin/webdriver-manager update 

或者

  1. webdriver-manager update 

要是當(dāng)前的測試失敗,可能會在首頁看到“app works”這樣的文本提示。這并不是因為我們修改了首頁的內(nèi)容就出現(xiàn)這種情況。

在我們開始編寫我們的測試之前,讓我們理解一些重要的通用函數(shù),然后使用 Angular 2 的端到端測試。

 

導(dǎo)航到頁面

在測試文件中,有一個browser全局變量。它使用import語句引入

  1. import { browser, element, by } from 'protractor/globals'

你現(xiàn)在可以添加上。

例如,我們使用下面語句導(dǎo)航到你的應(yīng)用程序中可用的任何頁面

  1. browser.get('/'); 

到你的主頁,和

  1. browser.get('/users'); 

到users頁面。請注意,這些網(wǎng)址是相對的URL,我們也可以使用絕對URL,但是我建議使用相對URL,因為如果你的域名改變,這更易于維護(hù)。

選擇元素

通常的做法是在當(dāng)前頁面上選擇元素。你可以通過一個叫做element的全局變量選擇元素。它接受可以使用全局by創(chuàng)建的定位器。

使用選擇具有g(shù)reen類的p標(biāo)簽例子如下

  1. let greenParagraph = element(by.css('p.green')); 

選擇多個元素,有些輕微的變化

  1. let greenParagraphs = element.all(by.css('p.green')); 

這將給出一個數(shù)組,而不是一個單一的元素。

抓取元素文本

要得到一個元素的文本,你必須先選擇它,然后調(diào)用getText方法,想下面這樣。

 

  1. let greenParagraph = element(by.css('p.green'));  
  2. let text = greenParagraph.getText(); 

點擊元素

點擊元素可以使用下面的語法完成

 

  1. let submitButton = element(by("form .submit-button"));  
  2. submitButton.click(); 

統(tǒng)計元素

我們也可以使用下面的語法來統(tǒng)計元素個數(shù)。

 

  1. let blueParagraphsList = elements.all(by("p.blue"));  
  2. let count = blueParagraphsList.count(); 

 

Test Scenarios測試方案

對于那些不太尋常的概念,我們列出了上面覆蓋的場景。

確認(rèn)要做的首要三件事

當(dāng)應(yīng)用程序初次被加載的時候,我們有將要做三件事。

在測試文件 e2e/app.e2e-spec.ts 的內(nèi)部, beforeEach 代碼塊的下面,刪除調(diào)用它的函數(shù),并在下面添加

 

  1. it("should show three todos when we first load the todo app", () => {  
  2. browser.get("/");  
  3. let todos = element.all(by.css(".todos .todo"));  
  4. expect(todos.count()).toEqual(3);  
  5. }) 

不要忘記在這個文件的頂部添加這個導(dǎo)入聲明

  1. import { browser, element, by } from 'protractor/globals'

現(xiàn)在,當(dāng)你運行 protractor 命令,另一個瀏覽器將會被打開且迅速關(guān)閉,在你的控制臺上你能看到通過測試的時候顯示為綠色。

好的!我們剛剛已經(jīng)寫完了我們第一個通過 Angular 2 的端到端測試。

 

添加一個新的待辦事項

現(xiàn)在進(jìn)行下一個,我們可以添加一個待辦事項。讓我們用下面的代碼添加一個測試塊

 

  1. it("should be able to add a new todo", () => {  
  2. browser.get("/");  
  3. let newTodoInput = element(by.css(".add-todo input[type=text]"));  
  4. newTodoInput.sendKeys("Todo 4");  
  5. let newTodoSubmitButton = element(by.css(".add-todo input[type=submit]"));  
  6. newTodoSubmitButton.click();  
  7. let todos = element.all(by.css(".todos .todo"));  
  8. expect(todos.count()).toEqual(4);  
  9. }) 

我們在這里要做的是在待辦事項輸入框中輸入文本并提交表單。然后我們檢查是否有四個待辦事項。 如果是的話,測試通過。

我們剛剛介紹了另一個函數(shù)sendKeys,它可以訪問一個選中的元素,常用于輸入文本到輸入框這類元素中。

查看待辦事項的詳情頁

我們應(yīng)該能單擊一個待辦事項轉(zhuǎn)到該待辦事項的詳情頁,讓我們用下面的測試實現(xiàn)它吧。

 

  1. it("should be able to click on a todo on the homepage and get to the details page", () => {  
  2. browser.get("/");  
  3. let firstTodo = element.all(by.css(".todos .todo")).first();  
  4. let firstTodoText = firstTodo.getText();  
  5. firstTodo.click();  
  6. let inputFieldText = element(by.css("todo input[type=text]")).getAttribute("value");  
  7. expect(inputFieldText).toEqual(firstTodoText);  
  8. }) 

刪除一個待辦事項

我們應(yīng)該能刪除一個待辦事項。現(xiàn)在讓我們試著刪除一個待辦事項看看能不能成功。

我們將轉(zhuǎn)到待辦事項頁并單擊刪除鏈接,當(dāng)我們返回主頁時,我們能看到減少了一個待辦事項。

 

  1. it("should be able to delete a todo", () => {  
  2. browser.get("/");  
  3. let firstTodo = element.all(by.css(".todos .todo")).first();  
  4. firstTodo.click();  
  5. let deleteLink = element(by.cssContainingText("span""Delete"));  
  6. deleteLink.click();  
  7. let todosList = element.all(by.css(".todos .todo"));  
  8. expect(todosList.count()).toEqual(2);  
  9. }) 

編輯一個待辦事項的標(biāo)題

我們能編輯待辦事項的標(biāo)題,保存后能在主頁的待辦事項列表中顯示新標(biāo)題。

 

  1. it("should be able to edit a todo title", () => {  
  2. browser.get("/");  
  3. let firstTodo = element.all(by.css(".todos .todo")).first();  
  4. firstTodo.click();  
  5. let todoInputField = element(by.css("todo input[type=text]"));  
  6. todoInputField.clear();  
  7. todoInputField.sendKeys("Editted Todo1 Title");  
  8. let saveButton = element(by.css("todo button[type=submit]"));  
  9. saveButton.click();  
  10. firstTodo = element.all(by.css(".todos .todo")).first();  
  11. let firstTodoText = firstTodo.getText();  
  12. expect(firstTodoText).toEqual("Editted Todo1 Title");  
  13. }) 

不能保存空的待辦事項

當(dāng)我們想保存一個空的待辦事項時,我們無法進(jìn)行操作,并且單擊禁用按鈕時,待辦事項列表依然保持同樣的長度。

 

  1. it("should not be able to save an empty todo", () => {  
  2. browser.get("/");  
  3. let newTodoInput = element(by.css(".add-todo input[type=text]"));  
  4. let newTodoSubmitButton = element(by.css(".add-todo input[type=submit]"));  
  5. newTodoSubmitButton.click();  
  6. let todos = element.all(by.css(".todos .todo"));  
  7. expect(todos.count()).toEqual(3);  
  8. }) 

保存按鈕在初始化時禁用

初始化時添加待辦事項按鈕被禁用,所以我們添加下列代碼

  1. it("should have add todo button be disabled initially", () => {  
  2. browser.get("/");  
  3. let newTodoSubmitButton = element(by.css(".add-todo input[type=submit]"));  
  4. expect(newTodoSubmitButton.isEnabled()).toEqual(false);  
  5. }) 

當(dāng)我們開始輸入時啟用保存按鈕

只用當(dāng)我們開始輸入待辦事項標(biāo)題時,待辦事項保存按鈕才被啟用。

 

  1. it("should only enable save todo button when we start typing a new todo title", () => {  
  2. browser.get("/");  
  3. let newTodoSubmitButton = element(by.css(".add-todo input[type=submit]"));  
  4. let newTodoInputField = element(by.css(".add-todo input[type=text]"));  
  5. newTodoInputField.sendKeys("New Todo 4");  
  6. expect(newTodoSubmitButton.isEnabled()).toEqual(true); 
  7. }) 

 

結(jié)論

現(xiàn)在,我們來總結(jié)一下 Angular2 的“端對端”測試。即使您沒有任何的編程基礎(chǔ),也可以快速上手編寫“端對端”測試。對于那些被引入代碼庫而又可能存在漏洞的部分,“端對端”測試是一個高效便捷的方法來捕獲問題所在。

我們在概念部分中介紹了一些其他方法。您可以點擊這里來瀏覽這些 Protractor API。并且可以在 GitHub repository 上找到這個應(yīng)用的完整版和測試版。

我希望您看完這個介紹之后,在您修改任何一行代碼之前都能興奮的開始您的前端應(yīng)用測試。如果您高興,和我們交流一些您在日常測試中的高見。或者是您關(guān)于 Javascript 框架及 Angular2 的想法。感謝您的閱讀。

責(zé)任編輯:未麗燕 來源: 開源中國社區(qū)
相關(guān)推薦

2021-06-30 09:00:00

測試Web軟件

2009-03-17 09:56:00

802.11n測試無線網(wǎng)絡(luò)

2023-03-16 14:29:48

Vue.js測試

2025-03-20 07:01:40

2025-03-28 07:50:00

端到端測試Go語言

2020-11-24 19:37:43

GoogleAndroid加密

2017-11-22 15:13:20

集成測試自動化測試契約測試

2023-11-23 13:23:41

AI訓(xùn)練

2020-10-26 13:51:11

Kafka數(shù)據(jù)端到端

2021-09-02 15:29:42

鴻蒙HarmonyOS應(yīng)用

2024-06-27 09:50:56

2024-02-21 09:14:32

端到端自動駕駛

2022-10-19 09:27:39

2024-08-08 09:30:00

2021-05-27 14:23:50

加密端到端加密加密技術(shù)

2022-09-02 10:20:44

網(wǎng)絡(luò)切片網(wǎng)絡(luò)5G

2022-03-04 17:16:35

加密E2EE密鑰

2020-09-01 07:29:11

機器學(xué)習(xí)ML技術(shù)債務(wù)

2024-03-13 09:39:45

端到端自動駕駛

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端
點贊
收藏

51CTO技術(shù)棧公眾號

成人毛片在线观看| 综合天堂av久久久久久久| 日韩欧美国产黄色| 亚洲精品视频一二三| 99久久久国产精品无码免费| 欧美全黄视频| 日韩激情视频在线| 国产小视频精品| 四虎影视成人| 91毛片在线观看| 91精品中国老女人| 国产小视频在线免费观看| 成人在线亚洲| 亚洲精品99999| 依人在线免费视频| 国产美女高潮在线| 中文字幕综合网| 精品欧美一区二区在线观看视频| 中文字幕丰满人伦在线| 欧美日韩亚洲一区| 在线观看视频亚洲| 老熟女高潮一区二区三区| 日韩在线观看不卡| 亚洲成a人片综合在线| 午夜一区二区三视频在线观看| 性一交一乱一色一视频麻豆| 日日噜噜夜夜狠狠视频欧美人 | 一区二区欧美精品| 欧美亚洲免费在线| 亚洲福利在线观看视频| 麻豆国产精品一区二区三区| 欧美亚洲一级片| 久青草免费视频| 婷婷亚洲五月色综合| 亚洲欧美中文日韩在线| 这里只有精品在线观看视频| 日韩三级成人| 欧美曰成人黄网| 两根大肉大捧一进一出好爽视频| 亚洲淫性视频| 亚洲色大成网站www久久九九| 日产精品一线二线三线芒果| 午夜视频福利在线观看| 成人综合婷婷国产精品久久| 91久久精品国产91性色| 中文字幕在线观看免费| 日韩电影在线一区| 国产极品精品在线观看| 天天干天天干天天操| 在线午夜精品| 69久久夜色精品国产69乱青草| 久久免费公开视频| 亚洲午夜久久久久久尤物| 欧美成人小视频| 欧产日产国产v| 欧美精品91| 欧美激情国产精品| 国产在线免费视频| 在线看片一区| 91高清视频免费| 在线免费黄色av| 久久激情综合| 国产精品黄视频| 亚洲最新av网站| 黄一区二区三区| 91在线高清免费观看| 国产精品嫩草影院桃色| 国产在线精品视频| 成人动漫视频在线观看免费| 亚洲国产www| 成人黄色一级视频| 蜜桃视频在线观看成人| 成人免费黄色网页| 中文字幕中文字幕一区二区| 男人天堂成人网| 日本aa在线| 午夜久久福利影院| 欧美极品欧美精品欧美图片| 亚洲成人av观看| 欧美一区二区三区在线视频 | 无码人妻aⅴ一区二区三区有奶水| 另类亚洲自拍| 国产美女扒开尿口久久久| 国产欧美一区二区三区视频在线观看| 国产精品12区| 国产一区自拍视频| 国产精品麻豆一区二区三区| 中文字幕一区二| 8x8ⅹ国产精品一区二区二区| a国产在线视频| 色婷婷av一区| 在线观看av免费观看| 国产一区二区在线视频你懂的| 亚洲欧美国产制服动漫| 日本一二三区在线观看| 亚洲激情亚洲| 国产情人节一区| 好吊色在线观看| 日本一区二区动态图| 日韩久久久久久久久久久久| 性孕妇free特大另类| 88在线观看91蜜桃国自产| 亚洲一区二区在线免费| 色999日韩| 78色国产精品| 国产视频第一页| 久久青草欧美一区二区三区| 国产人妻互换一区二区| 亚洲精品动漫| 欧美一区二区三区视频在线观看 | 国产精品久久久久久久久久久久久久久久 | 国产精品久久一| 黄色成人一级片| 国产精品亲子伦对白| 欧美不卡在线播放| 9999精品| 中文字幕日韩在线视频| 久久黄色精品视频| 丁香婷婷深情五月亚洲| 亚洲bbw性色大片| 蜜桃在线视频| 欧美本精品男人aⅴ天堂| 国产一区二区三区精品在线| 亚洲精品视频啊美女在线直播| 91久久精品国产91性色| 国产区视频在线播放| 午夜精品福利一区二区蜜股av| 在线视频观看91| 精品理论电影| 日韩av电影院| 婷婷色在线观看| 亚洲一区二区欧美日韩| 久久久久久久久久一区二区| 猛男gaygay欧美视频| 国模吧一区二区| 精品久久久免费视频| 中文字幕日韩一区二区| 午夜精品在线免费观看| 亚洲影院天堂中文av色| 97精品一区二区视频在线观看| www.久久精品.com| 亚洲免费视频中文字幕| 亚洲小视频网站| 欧美电影一区| 国产日韩精品视频| 日韩精品成人av| 欧美日韩国产成人在线免费| 五月天精品在线| 日韩不卡一二三区| 亚洲国产高清国产精品| 99久久伊人| 深夜精品寂寞黄网站在线观看| 91丝袜一区二区三区| 久久先锋影音av鲁色资源| 播放灌醉水嫩大学生国内精品| 美女视频亚洲色图| 国产91精品久| 国产午夜视频在线观看| 在线视频一区二区免费| 91成人在线免费视频| 日韩电影在线一区二区| 亚洲一区二区三区午夜| 国产成人视屏| 欧美激情亚洲精品| 日韩在线观看视频一区| 岛国视频午夜一区免费在线观看| 野花社区视频在线观看| 久久夜色精品| 一区高清视频| 秋霞一区二区| 韩国三级日本三级少妇99| 丝袜视频国产在线播放| 91久久一区二区| 国产白丝一区二区三区| 国产美女一区二区| 男人的天堂狠狠干| 禁果av一区二区三区| 国产精品www| 激情成人四房播| 亚洲精品一线二线三线| 中文字幕高清在线免费播放| 国产精品理论片| 亚洲成人激情小说| 午夜一区不卡| 懂色av一区二区三区四区五区| 亚洲专区**| 日韩美女中文字幕| 黄网站免费在线观看| 亚洲成人黄色网| 天天天天天天天干| 亚洲一区在线观看免费观看电影高清 | www.在线欧美| 一区二区三区视频网| 国产综合视频| 亚洲精品欧美精品| 嗯用力啊快一点好舒服小柔久久| 国产va免费精品高清在线| 精品国产白色丝袜高跟鞋| 日韩第一页在线| 一区二区三区日| 午夜一区二区三区视频| 国产午夜精品久久久久久久久| 国产成人精品亚洲日本在线桃色 | 色天使综合视频| 欧美另类极品videosbestfree| 天堂成人在线| 日韩欧美国产综合一区| 中国a一片一级一片| 一区二区成人在线视频 | 成人激情电影在线| 国产精品一区二区不卡视频| 农村妇女一区二区| 8050国产精品久久久久久| 97caopron在线视频| 在线看片第一页欧美| 熟妇人妻中文av无码| 91精品国产一区二区| 日韩免费av网站| 亚洲国产wwwccc36天堂| 国产美女福利视频| 中文字幕av资源一区| 熟妇人妻久久中文字幕| 国产精品亚洲视频| 手机在线看福利| 久久福利毛片| 成熟丰满熟妇高潮xxxxx视频| 欧美在线网址| 伊人狠狠色丁香综合尤物| 亚洲丝袜美腿一区| 九九九九精品| japanese色系久久精品| 亚洲自拍偷拍第一页| 久久亚洲国产精品尤物| 热久久这里只有精品| 激情黄产视频在线免费观看| 色综合久久88色综合天天看泰| 思思99re6国产在线播放| 在线播放国产一区二区三区| 亚洲 精品 综合 精品 自拍| 日韩美一区二区三区| 国产熟女一区二区三区四区| 欧美日韩aaaaa| 男操女视频网站| 欧美在线观看一二区| 337p粉嫩色噜噜噜大肥臀| 日韩欧美中文字幕在线观看| 日日夜夜综合网| 欧美日韩国产在线看| 欧美bbbbbbbbbbbb精品| 调教+趴+乳夹+国产+精品| 日本一二三区不卡| 午夜视频在线观看一区| 日韩精品一区二区在线播放 | 欧美日韩第二页| 久久一区亚洲| 少妇激情一区二区三区| 日本成人在线电影网| 亚洲77777| 国产最新精品精品你懂的| 中文字幕12页| 粉嫩嫩av羞羞动漫久久久| 国产一线在线观看| 99久久精品免费看国产免费软件| 亚洲天堂av网站| 久久综合给合久久狠狠狠97色69| 欧美偷拍一区二区三区| 国产精品热久久久久夜色精品三区| 国产又黄又粗又猛又爽的| 亚洲三级小视频| 国产一级一片免费播放| 欧美日韩精品在线视频| www.久久精品视频| 欧美日韩精品一区二区在线播放 | 人人鲁人人莫人人爱精品| 国产精品观看在线亚洲人成网| 国产一区影院| 999国内精品视频在线| 老司机aⅴ在线精品导航| 欧美国产综合视频| 国产精品久久久久蜜臀| 秋霞无码一区二区| 日本强好片久久久久久aaa| 国内av免费观看| 91小视频在线观看| 91禁男男在线观看| 亚洲综合999| 日日夜夜操视频| 欧美一卡二卡在线观看| 日本中文字幕一区二区有码在线| 一区二区三区美女xx视频| 亚洲91av| 国产精品午夜国产小视频| 亚洲国产中文在线二区三区免| 鲁鲁视频www一区二区| 久久精品国内一区二区三区水蜜桃| 久久人人爽人人爽人人av| 日产国产高清一区二区三区| 自拍偷拍激情视频| 国产日产欧产精品推荐色| 青娱乐91视频| 欧美色偷偷大香| 天天色棕合合合合合合合| 久久久精品免费| 成人开心激情| 国产伦一区二区三区色一情| 久久婷婷蜜乳一本欲蜜臀| 六月婷婷在线视频| 国产一区在线视频| 久久久久久久久久久久| 亚洲一区二区黄色| 91精品国产乱码久久久| 亚洲欧美国产va在线影院| 精品精品导航| 成人两性免费视频| 国产日产一区| koreanbj精品视频一区| 国产精品1024| 99成人在线观看| 色婷婷综合激情| 亚洲区小说区图片区| 欧美裸体男粗大视频在线观看| 岛国一区二区| 蜜桃传媒视频麻豆一区| 尤物网精品视频| 欧美性猛交乱大交| 成人免费一区二区三区视频| www.欧美色| 亚洲精品网址在线观看| 18aaaa精品欧美大片h| 91久久极品少妇xxxxⅹ软件| 色小子综合网| 亚洲老女人av| 日本一区二区免费在线| 欧美在线观看不卡| 亚洲精品国偷自产在线99热| 丝袜美腿av在线| 91免费的视频在线播放| 日韩欧美1区| 在线黄色免费观看| 国产日产精品一区| 国产亚洲欧美日韩高清| 亚洲欧美日韩天堂| 成人欧美magnet| 免费试看一区| 蜜桃av一区| 国产18无套直看片| 欧美午夜不卡在线观看免费| 国产h视频在线观看| 国产成人精品999| 精品国产一区二区三区av片| 亚洲综合在线网站| 国产欧美日韩不卡免费| 一级一级黄色片| 少妇久久久久久| 看亚洲a级一级毛片| 99久久99久久精品| 成人久久久精品乱码一区二区三区| 麻豆91精品91久久久| 精品国产91久久久久久久妲己| √8天堂资源地址中文在线| 激情小说综合区| 久久激情中文| 午夜黄色福利视频| 欧美一二三四在线| caoprom在线| 欧美日韩精品久久| 美女mm1313爽爽久久久蜜臀| 国产视频精品免费| 欧美成人一级视频| 国产剧情av在线播放| 日韩欧美国产二区| 久草这里只有精品视频| 激情五月少妇a| 日韩精品久久久久久福利| 日韩中文影院| 六月婷婷激情网| 99久久精品免费精品国产| 波多野结衣大片| 久久成人亚洲精品| 精品欧美午夜寂寞影院| 亚洲成熟丰满熟妇高潮xxxxx| 国产精品麻豆视频| 成人久久久精品国产乱码一区二区| 2018国产精品视频| 久久国产精品亚洲人一区二区三区| 久久久久久国产精品日本| 精品欧美激情精品一区| 日本中文字幕在线观看| 国产伦精品一区| 蜜桃精品视频在线| 久久亚洲AV无码| 国产午夜精品全部视频在线播放| 韩国三级大全久久网站| 久久网站免费视频| 一区在线观看视频| 欧洲伦理片一区 二区 三区| 91欧美精品午夜性色福利在线 | 要久久爱电视剧全集完整观看| 欧美成年人视频在线观看| 五月激情综合网|