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

Monkey自己就能寫腳本,你不試試嗎?

開發(fā) 開發(fā)工具
雖然之前是利用 Python + Monkey + adb 命令,完成的一連串自動化測試的腳本。而 Monkey 本身也是支持編寫腳本的,這個腳本叫 MonkeyScript(下文簡稱MS),只是 Google 官方,并沒有相關(guān)的文檔進(jìn)行描述。可我們依然可以從源碼中找到蛛絲馬跡。

[[213032]]

 一、前言

之前有講解過 Android 下 Monkey 的腳本命令,而且還用 Python 寫了一個非常簡單的利用 Monkey 的測試腳本。

雖然之前是利用 Python + Monkey + adb 命令,完成的一連串自動化測試的腳本。而 Monkey 本身也是支持編寫腳本的,這個腳本叫 MonkeyScript(下文簡稱MS),只是 Google 官方,并沒有相關(guān)的文檔進(jìn)行描述。可我們依然可以從源碼中找到蛛絲馬跡。

本片文章適用于程序員和測試人員,會從源碼的角度來分析 Monkey Script,如果僅僅是測試人員,對此不感興趣,可以跳過相關(guān)小結(jié)進(jìn)行閱讀。希望閱讀者有一點 ADB 和 Monkey 腳本的經(jīng)驗,這樣更方便閱讀。

二、什么是MonkeyScript

MS 是官方提供的,除了直接使用 Monkey 命令,像猴子一樣隨機亂點之外,還可以通過編寫腳本的形式,完成一系列固定的操作。MS 提供一整套完善的 API 來進(jìn)行支持,主要還是基于坐標(biāo)點的操作,包含常用的:點擊、長按、輸入、等待等操作。

1、MonkeyScript的使用

MS 雖然需要編寫測試腳本,但是它還是屬于 Monkey 命令的一部分,需要通過 Monkey 命令進(jìn)行啟動、運行。

Monkey 啟動 MonkeyScript 的命令如下:

  1. adb shell monkey -f <MonkeyScript> <EventCount> 

通過 -f 參數(shù)即可指定一個 MS 腳本進(jìn)行執(zhí)行。需要注意的是,因為 adb shell 的運行環(huán)境是在待測試的 Android 設(shè)備上,所以需要將 MS 腳本 ,使用 adb pull 命令,傳到待測試的設(shè)備上,然后再進(jìn)行運行。

2、MonkeyScript的常用API

MS 其實提供了非常完備的 API ,但是本篇文章并不想只是一個幫助文檔,這里僅介紹一些常用的 API ,想查看完整的 API ,可以選擇閱讀 MS 相關(guān)的源碼,或者可以在本公眾號,回復(fù)關(guān)鍵字『MonkeyScriptAPI』即可得到完整的 API 文檔。

1、點擊事件(DispatchPointer)

DispatchPointer 命令用于向一個指定的坐標(biāo)位置,發(fā)送單個手勢消息,一般用它來模擬點擊的操作。

它完整的方法簽名是:

DispatchPointer ( downTime , eventTime , action , x , y , pressure , size , metaState , xPrecision , yPrecision , device , edgeFlags)

其實這么多參數(shù),只需要關(guān)注action 、 x 、y 三個參數(shù)即可。

  • action :事件是按下還是抬起,0 表示按下,1 表示抬起。
  • x、y:表示當(dāng)前事件觸發(fā)的X軸和Y軸的坐標(biāo)。

也就是說,兩個 DispatchPointer 命令加在一起,分別表示 按下 和 抬起 ,一組按下和抬起,就代表了一次點擊操作,其余的參數(shù),統(tǒng)一設(shè)置為 0 即可。

2、按鍵消息(DispatchKey)

DispatchKey 主要是用于發(fā)送一些 Android 標(biāo)準(zhǔn)的 EventKey 按鍵消息。只需要傳遞對應(yīng)的值就好了。

具體的鍵值,可以通過官網(wǎng)查詢:

https://developer.android.com/reference/android/view/KeyEvent.html

DispatchKey 消息的方法前面和 DispatchPointer 一樣,所以同樣也只需要關(guān)注 action、x、y 三個參數(shù)即可。

3、開啟關(guān)閉軟鍵盤(DispatchFlip)

DispatchFlip 命令用于打開或者關(guān)閉軟鍵盤。它的方法簽名如下:

  1. DispatchFlip (keyboardOpen) 

其中的參數(shù),true 表示打開,false 表示關(guān)閉。

4、打開指定的Activity(LaunchActivity)

LaunchActivity 命令用于打開任意應(yīng)用的一個頁面,但是前提條件是打開的Activity 需要屬性 android:exported 被設(shè)定為true,才可以通過 LaunchActivity 打開。它的方法簽名如下:

  1. LaunchActivity ( pkg_name , act_name ) 

它的兩個參數(shù),分別表示打開的 App 的包名和打開的 Activity 的名稱。

5、等待(UserWait)

UserWait 命令用于讓腳本中斷執(zhí)行一段時間。因為是腳本自動執(zhí)行,多個事件之間執(zhí)行的速度會非常的快,有時候我們需要等待一段時間,讓設(shè)備響應(yīng)剛才執(zhí)行的事件,需要在等待一段時間之后,再繼續(xù)執(zhí)行腳本,這個時候就可以使用 UserWait 。

它的方法簽名如下:

  1. UserWait ( sleepTime ) 

sleepTime 的單位是毫秒。

6、輸入字符串(DispatchString)

DispatchString 命令用于輸入一個字符串。

它的方法簽名如下:

  1. DispatchString( input ) 

沒什么好解釋的, input 就是一個字符串即可,但是 MS 對中文的支持并不好,所以盡量輸入英文的測試數(shù)據(jù)。

7、運行 Shell 命令(RunCmd)

RunCmd 命令用于在設(shè)備上運行 shell 命令。當(dāng)然這些 shell 命令必須是當(dāng)前待測試設(shè)備支持的 shell 命令。

它的方法簽名如下:

  1. RunCmd ( cmd )   

參數(shù) cmd 就是需要執(zhí)行的 shell 命令。

8、鍵盤事件(DispatchPress)

DispatchPress 命令用于模擬敲擊鍵盤的事件。

它的方法簽名如下:

DispatchPress( keyName )

三、MonkeyScript的源碼分析

雖然,Google 官方并沒有提供對 MS 詳細(xì)講解的 API 文檔,但是我們是可以通過源碼來分析出 MS 支持的API的。

MS 的源碼文件是:MonkeySourceScript.java

可以在 AndroidXref 網(wǎng)站在線查看源代碼:

http://androidxref.com/5.1.1_r6/xref/development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java

這里以 5.1.1 為例子,進(jìn)行講解,其實這一塊的代碼變動非常的少,隨手找一個版本了解即可。

在源碼中,所有我們上面介紹的 API 都是以一個 static final 的形式被聲明。這里簡單就 LaunchActivity 的方法的源碼進(jìn)行講解,其他的 API 其實也大同小異。

如源碼所示,LaunchActiviity 會以數(shù)組的形式接收兩個參數(shù),分別表示 PackageName 和 Activity 的 ClassName,下面具體對應(yīng)的實現(xiàn),我們就不細(xì)看了。再參照上面介紹的 API ,就可以很清晰的定位出方法和參數(shù)的含義了。

四、舉個例子

介紹了 MS 的 API 和在源碼中的實現(xiàn),當(dāng)然需要寫個 Demo 才是一個完整的技術(shù)文章。

1、測試需要一個待測試的App

既然是為了測試,就需要一個待測試的 App ,這里簡單編寫一個頁面,模擬一個用戶登錄的操作,兩個對話框,一個表示 用戶名 一個表示 密碼,然后點擊 Login 進(jìn)行登錄。這個待測試的App,無論填寫什么,都是彈出提示登錄成功,***將輸入的內(nèi)容清空。

2、編寫 MonkeyScript 文件

有了待測試的 App ,我們就可以開始編寫 MonkeyScript 腳本文件了。

MS 腳本,只要是文本即可,不關(guān)心后綴是什么。一般來說,會以.script 或者 .mks來作為后綴,標(biāo)識它是一個 Monkey 腳本。

MS 腳本雖然有一些指定的 API ,但是也有一些固定的腳本頭,需要寫在腳本的最前面。

  1. # 控制 monkey 發(fā)送消息的 Monkey 頭 
  2. count=10 
  3. speed=1.0 
  4. start data>> 
  5. # 在此之下,編寫 monkey 腳本命令 
  6. # ... 

在腳本中,腳本頭是一直不變動的,為了避免寫錯,可以直接復(fù)制粘貼最為保險。在 start data>> 之后就可以正式開始編寫 monkey 腳本了,在腳本中,使用 # 號,對單行進(jìn)行注釋。

接下來就開始利用 MS 提供的 API 進(jìn)行腳本的編寫。首先我們需要熟悉測試的步驟。

步驟如下:

  1. 啟動App。
  2. 點擊用戶名的輸入框,輸入 250。
  3. 點擊密碼的輸入框,輸入 abcdef。
  4. 點擊 LOGIN 按鈕,彈出 Toast 提示登錄成功。
  5. 此次測試結(jié)束。

按照此步驟,編寫測試腳本,如下:

  1. count = 1 
  2. speed = 1.0 
  3. start data >> 
  4.  
  5. LaunchActivity(com.example.cxmy.monkeyscriptdemo,com.example.cxmy.monkeyscriptdemo.MainActivity) 
  6. UserWait(1000) 
  7.  
  8. # 點擊密碼框 
  9. DispatchPointer(10000,10000,0,68,345,0,0,0,0,0,0,0) 
  10. DispatchPointer(10000,10000,1,68,345,0,0,0,0,0,0,0) 
  11. UserWait(100) 
  12.  
  13. DispatchPress(KEYCODE_2) 
  14. UserWait(100) 
  15. DispatchPress(KEYCODE_5) 
  16. UserWait(100) 
  17. DispatchPress(KEYCODE_0) 
  18. UserWait(100) 
  19.  
  20. # 點擊密碼框 
  21. DispatchPointer(10000,10000,0,68,446,0,0,0,0,0,0,0) 
  22. DispatchPointer(10000,10000,1,68,446,0,0,0,0,0,0,0) 
  23. UserWait(100) 
  24.  
  25. DispatchString(abcdef) 
  26. UserWait(100) 
  27.  
  28. DispatchPointer(10000,10000,0,548,627,0,0,0,0,0,0,0) 
  29. DispatchPointer(10000,10000,1,548,627,0,0,0,0,0,0,0) 
  30. UserWait(100) 

注意這里分別使用了 DispatchPress 和 DispatchString 來分別使用,就是為了做演示,實際你可以依賴場景選擇使用的 API 。而其中涉及到坐標(biāo)點的問題,這個在后面會講解如何獲取控件的坐標(biāo)點。

編寫好腳本,保存為 monkey.mks 文件,并通過 adb push 將其上傳到待測試的設(shè)備中。

  1. adb push monkey.mks /data/local/tmp/ 

然后通過 monkey -f 執(zhí)行此腳本,例如下面執(zhí)行 10 次。

  1. adb shell monkey -f /data/local/tmp/monkey.mks 10 

執(zhí)行完成之后,可以在控制臺,看到輸出的 Log 信息。

在執(zhí)行的過程中,就可以看到 MS 會自動啟動我們待測試的 App ,然后按照我們的編寫的測試腳本,進(jìn)行重復(fù)執(zhí)行 10 次。

 

3、控件坐標(biāo)點的獲取

網(wǎng)上很多推薦獲取坐標(biāo)點的方式,是使用 android-sdk/tools 目錄下,提供的 uiautomatorviewer 工具來獲取。但是這種方式非常的繁瑣,而實際上,我們又不需要如此精確的坐標(biāo)點,畢竟控件那么大,只要點擊的坐標(biāo)落在控件的位置上,就滿足我們的需要。

那么我推薦另外一種更簡單的方式,來獲取當(dāng)前你看見的,在待測試設(shè)備上的控件的坐標(biāo)點的定位方式。那就是利用 Android 設(shè)備的開發(fā)者選項。

設(shè)置 → 開發(fā)者選項 → 指針位置 ,將這個屬性開啟之后,當(dāng)手指在屏幕上滑動的時候,就可以在頂部看到當(dāng)前觸摸點的 X、Y 軸的坐標(biāo),這就是我們需要的。

開發(fā)者選項不是默認(rèn)可見的,你需要自行開啟開發(fā)者模式,之后再進(jìn)行此操作。

五、總結(jié)

MS 提供的API非常的方便,可以利用它們做一些自動化操作。

【本文為51CTO專欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請通過微信公眾號聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2010-08-16 10:10:22

SQL腳本

2024-03-11 08:21:49

2016-09-07 12:44:43

2021-11-12 06:11:00

M1 MacLinuxCanonical

2022-07-19 07:30:06

BigDecimal運算float

2020-08-17 15:25:25

HTMLPython網(wǎng)頁

2010-08-23 10:46:52

英特爾

2019-10-10 09:35:01

分庫分表JDK

2013-06-07 09:42:45

微信移動應(yīng)用營銷工具

2020-07-14 07:48:19

Java對象JVM

2021-01-27 11:36:34

代碼開發(fā)工具

2018-10-15 15:24:18

Python函數(shù)代碼

2023-09-07 17:11:07

畫質(zhì)評估工具

2022-08-14 22:35:37

EurekaConsul

2012-04-27 10:13:08

云計算數(shù)據(jù)IaaS

2016-01-21 09:55:51

2022-11-11 10:01:35

代碼Copilot函數(shù)

2022-04-01 09:01:55

Dubbo接口系統(tǒng)

2021-08-10 22:49:20

Windows 11Windows微軟

2020-01-14 17:02:20

Windows 7Windows 10微軟
點贊
收藏

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

色18美女社区| 亚洲人成人77777线观看| 五月天婷婷综合网| 久久综合欧美| 欧美久久久久久久久中文字幕| 一区二区三区四区视频在线| jlzzjlzzjlzz亚洲人| 99精品福利视频| 国产一区av在线| 91视频福利网| 成人影院av| 亚洲三级在线看| 精品国产乱码久久久久久久软件| 国产伦精品一区二区三区视频我| 97精品97| 亚洲精品中文字幕有码专区| 8x8x成人免费视频| 亚洲精品福利电影| 亚洲免费av高清| 热re99久久精品国产99热| 国产又粗又黄又爽视频| 国产精品久久久免费 | 欧美专区在线视频| 午夜国产福利一区二区| 色棕色天天综合网| 精品国产乱码久久久久久浪潮| 黑人粗进入欧美aaaaa| 欧美aaaxxxx做受视频| 国产片一区二区| 国产亚洲欧美一区二区三区| 91在线观看喷潮| 久久久久久黄| 91av国产在线| 国产无码精品视频| 欧美91大片| zzijzzij亚洲日本成熟少妇| 一级性生活大片| 波多野结衣欧美| 91麻豆精品国产自产在线 | 精品在线播放免费| 国产不卡av在线| 欧美一区二区三区四| 欧美天天视频| 欧美成人在线免费| 国产免费一区二区三区四区| 国产一区二区三区网| 日韩电影免费观看在线观看| 稀缺呦国内精品呦| 亚洲一区二区三区四区电影| 3d动漫精品啪啪| 少妇一级淫免费播放| 国产亚洲一区二区手机在线观看| 欧美日韩在线影院| 黄色免费视频大全| 午夜久久中文| 欧美性猛交xxxx偷拍洗澡| 老司机激情视频| 牛牛精品在线视频| 亚洲v日本v欧美v久久精品| 日韩精品一区二区在线视频| 91蜜桃在线视频| 一区二区三区欧美久久| 久久天天东北熟女毛茸茸| 超碰在线观看免费| 一区二区三区免费| 黄色一级片在线看| 999福利在线视频| 大伊人狠狠躁夜夜躁av一区| 免费观看美女裸体网站| 韩日毛片在线观看| 欧美性猛交xxxx黑人| 无码精品国产一区二区三区免费| 亚洲精品成人图区| 欧美天堂亚洲电影院在线播放| 在线观看国产中文字幕| 2019中文亚洲字幕| 日韩久久久久久| 成年人的黄色片| av动漫在线免费观看| www黄在线观看| 国产精品高清亚洲| 黄色免费高清视频| 欧美另类tv| 欧美色另类天堂2015| 五月天婷婷激情视频| 日本一区二区中文字幕| 欧美一级日韩免费不卡| 艳妇乳肉豪妇荡乳xxx| 在线观看欧美理论a影院| 一区二区在线免费视频| 成年人午夜剧场| 国产亚洲综合精品| 国产精品美乳一区二区免费| 99久久国产热无码精品免费| 成人免费观看av| 日韩精品在在线一区二区中文| 二区在线播放| 精品久久久久久久久久久| 午夜在线观看av| 亚洲一区二区电影| 亚洲天堂av网| 青青操国产视频| 三级成人在线视频| 91黄色精品| 国产在线视频网站| 亚洲午夜久久久久| 91n.com在线观看| 草草视频在线一区二区| 一区二区三区动漫| 国产亚洲精品久久777777| 久久综合图片| 99久久无色码| 欧美午夜电影一区二区三区| 亚洲444eee在线观看| 特级丰满少妇一级| 欧美精品国产白浆久久久久| 精品国产一区久久久| 成人午夜视频精品一区| 国产一区二区按摩在线观看| 免费久久久一本精品久久区| 在线免费av导航| 欧美影院精品一区| 中文字幕 亚洲一区| 欧美一区高清| 国产欧美 在线欧美| 丝袜+亚洲+另类+欧美+变态| 一区二区三区毛片| 天堂视频免费看| 最新亚洲精品| 午夜精品久久久久久久久久久久 | 免费日本一区二区三区视频| 午夜电影网亚洲视频| 久久出品必属精品| 日韩成人免费| 日韩av理论片| 日本一级在线观看| 亚洲线精品一区二区三区八戒| av中文字幕网址| 欧美日韩伦理在线免费| 2020欧美日韩在线视频| 二区三区在线视频| 亚洲一区二区欧美日韩| 能看毛片的网站| 一区二区中文| 亚洲qvod图片区电影| 日本高清视频在线播放| 欧美三级中文字| 国产7777777| 轻轻草成人在线| 亚洲mv在线看| 成人黄色免费观看| 伊人久久久久久久久久久久久| 欧美性猛交bbbbb精品| a在线欧美一区| 成人一对一视频| 欧洲亚洲一区二区三区| 97视频在线观看视频免费视频| 囯产精品一品二区三区| 亚洲国产日韩综合久久精品| 国产精品91av| 99国产精品久久久久久久| 国产精品久久精品视| ****av在线网毛片| 亚洲激情视频在线播放| av黄色在线看| 久久影音资源网| 天天干天天综合| 91精品成人| 国产精品99久久久久久久| 欧美巨大xxxx做受沙滩| 亚洲精品99久久久久| av网站中文字幕| 欧美国产成人精品| 成人性生交视频免费观看| 欧美日本一区二区视频在线观看| 国产精品亚洲综合| jk漫画禁漫成人入口| 一本色道久久88精品综合| 在线观看不卡的av| 一区二区三区波多野结衣在线观看| 久久久久99人妻一区二区三区| 99亚洲一区二区| 视频一区二区三区在线观看| 国产精区一区二区| 97视频在线播放| 色哟哟免费在线观看| 日韩欧美一区二区免费| 日韩 欧美 综合| 中文字幕av一区二区三区免费看 | 免费高清一区二区三区| 色婷婷狠狠五月综合天色拍 | 一级黄色片免费看| 亚洲国产日日夜夜| 成人在线手机视频| 高清成人在线观看| 亚洲人成无码www久久久| 99视频精品全国免费| 国产一区二区三区高清| 成人亚洲免费| 久久久亚洲网站| av成人手机在线| 亚洲成人中文字幕| 在线观看一二三区| 午夜久久久影院| 99热6这里只有精品| 成人91在线观看| www.se五月| 久久亚洲精选| 97超碰国产精品| 久久网站免费观看| 看高清中日韩色视频| 韩国三级成人在线| 国产99在线|中文| 国产精品探花在线| 深夜福利国产精品| 三级理论午夜在线观看| 日韩欧美电影一区| 在线播放一级片| 日本韩国精品一区二区在线观看| 欧美黄色免费看| 国产精品久久99| 久久美女免费视频| 99精品欧美一区| 香蕉在线观看视频| 久99久精品视频免费观看| 国产麻花豆剧传媒精品mv在线| 女人香蕉久久**毛片精品| 亚洲精品久久久久久一区二区| 欧美黑人做爰爽爽爽| 99r国产精品视频| 亚洲伦理一区二区| 国产精品久久久久久一区二区 | 欧美国产综合| 中文字幕一区二区三区5566| 国产aⅴ精品一区二区三区久久| 国产精品xxxx| 2023国产精华国产精品| 成人天堂噜噜噜| 国产精品久久久久77777丨| 欧洲亚洲免费在线| 草草视频在线| 18一19gay欧美视频网站| 大桥未久在线播放| 欧美激情一级欧美精品| av网站在线看| 欧美成人网在线| 日本性爱视频在线观看| 色综合久久88色综合天天看泰| 久操视频在线观看| 久久精品小视频| 高清免费电影在线观看| 理论片在线不卡免费观看| 精品欧美色视频网站在线观看| 久久精品91久久久久久再现| 一本一道波多野毛片中文在线 | 狼人综合视频| 午夜精品久久久久久久99热浪潮| 国产羞羞视频在线播放| 亚洲 日韩 国产第一| 午夜激情在线播放| 国产精品成人国产乱一区| 91超碰碰碰碰久久久久久综合| 国产免费一区二区三区香蕉精| 国产精品一区二区精品| 国产精品国产精品国产专区不卡| 国产精品久久久久久久久久白浆| 国产一区二区免费电影| 狠狠做深爱婷婷综合一区| 亚洲欧美日韩精品综合在线观看| 欧美gayvideo| 成人在线播放网址| 久久高清国产| 色乱码一区二区三区在线| 国产成人在线免费观看| www国产视频| 国产日韩高清在线| 性欧美疯狂猛交69hd| 亚洲成人av电影| av首页在线观看| 日韩一区二区三区四区| 手机看片福利在线| 国产一区二区三区在线观看网站| 色的视频在线免费看| 久久久久亚洲精品成人网小说| 免费亚洲电影| 亚洲一区二区三区视频| 精品国产一区二区三区不卡蜜臂| 欧美一区二区三区四区五区六区| 欧美国产小视频| 日日摸日日碰夜夜爽无码| 日韩高清在线观看| 97精品人人妻人人| 中文字幕第一页久久| 久久久久久福利| 色香蕉成人二区免费| av网站中文字幕| 色先锋久久av资源部| 国产一区二区在线不卡| 日韩精品在线影院| 日韩精品黄色| 久久免费精品日本久久中文字幕| 黄色成人在线视频| 亚洲综合社区网| 国产一区不卡| 欧美又粗又长又爽做受| 肉丝袜脚交视频一区二区| 久久久久亚洲无码| 中文乱码免费一区二区| 丰满的亚洲女人毛茸茸| 五月天激情小说综合| 中文字幕在线2018| 亚洲精品成人av| 在线观看的av| 久久免费精品视频| 欧美欧美在线| 欧美三级网色| 欧美一区在线看| 中文字幕 日韩 欧美| 成人免费毛片片v| 久草免费新视频| 欧美视频一区在线观看| 人成网站在线观看| 伦理中文字幕亚洲| 美女18一级毛片一品久道久久综合| 99re国产在线播放| 第一sis亚洲原创| 又粗又黑又大的吊av| 国产成人免费视频网站高清观看视频| 成人性生交大免费看| 亚洲男人的天堂av| 久久这里只有精品9| 精品91自产拍在线观看一区| 中文字幕在线播放网址| 国产精品久久久久高潮| 国产精品videossex| www.欧美黄色| 久久精品av麻豆的观看方式| xxx在线播放| 午夜激情一区二区三区| 国产成人麻豆精品午夜在线| 美日韩精品免费观看视频| 成人午夜sm精品久久久久久久| 国产一区二区三区色淫影院| 欧美精品99| 制服丝袜中文字幕第一页 | 日本韩国视频一区二区| 香蕉久久一区二区三区| 欧美激情网友自拍| 91综合久久爱com| 免费观看亚洲视频| 国产一区二区在线观看免费 | 日韩免费视频| 欧美黄色一级片视频| 久久久欧美精品sm网站| 91国产丝袜播放在线| 精品国产一区二区三区久久久蜜月 | 国产精品一区二区三区四区| 国产传媒视频在线 | 国产极品久久久| 北条麻妃99精品青青久久| 精品三级国产| 免费成人进口网站| 奇米精品一区二区三区在线观看一| 天天摸日日摸狠狠添| 欧美系列在线观看| 免费黄色网址在线观看| 国产在线视频2019最新视频| 国产中文字幕一区二区三区| 久久综合伊人77777麻豆最新章节| 国产欧美一区二区精品性色超碰 | 九色porny丨首页在线| 亚洲自拍偷拍第一页| 欧美久久一级| 亚洲永久无码7777kkk| 高跟丝袜欧美一区| 三级做a全过程在线观看| 国产精品日本精品| 午夜片欧美伦| 国产精品麻豆入口| 日韩欧美成人免费视频| 国产在线网站| 成人综合国产精品| 欧美.日韩.国产.一区.二区| jizz欧美性20| 日本道免费精品一区二区三区| 黄网页免费在线观看| 亚洲一区二区三区四区在线播放 | 久久中文免费视频| 精品国产乱码久久久久久牛牛 | 亚洲女厕所小便bbb| 国产 欧美 自拍| 日韩美女免费线视频| 亚洲精品极品少妇16p| 国产精品嫩草69影院| 欧美综合色免费| 2024最新电影免费在线观看| 97视频资源在线观看| 免费高清在线视频一区·| 欧美爱爱小视频| 国产午夜精品视频|