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

Appium在Android UI測試中的應用實踐

移動開發(fā) Android
UI Automator Viewer 是 Android 官方的 UI 定位工具,位于 sdk/tools 下。運行后會打開 viewer 界面。點擊獲取按鈕即可獲取當前正在運行的 Activity 的 UI 結構。

 Android 測試工具與 Appium 簡介

Appium 是一個 C/S 架構的,支持 Android/iOS Native, Hybrid 和 Mobile Web Apps 的測試框架,與測試程序通過 Selenum Webdriver 協(xié)議通訊。Webdriver 的好處是通過 HTTP RPC 的方式調用 Server 上的過程,編寫測試腳本不受語言的限制,無論是 Python, Java, NodeJS 均可以方便的編寫測試。本文中將使用 Python 進行編程。

起因是因為市場部的同事拋來如下需求:批量添加一些微信好友。直接抓取請求進行重放的方法是不靠譜的,微信與服務端的通訊均加密,Pass??紤]使用 xposed 等框架 hook 相關函數(shù)進行操作。但是 xposed 需要越獄,且開發(fā)復雜,Pass。后來想到了使用 UI 測試工具進行模擬操作,開發(fā)較為簡單。

Android UI 測試工具有很多種,如 Monkey, UIAutomator, Selendroid, Robotium 等。其中 UIAutomator, Monkey, Selendroid 均為非侵入式的 UI 測試,也就是不需要修改源代碼,只要安裝了目標程序就可以進行測試。Robotium 需要與源碼一同編譯測試。Appium 實際上就是一個測試工具的統(tǒng)一調度軟件,將不同的非侵入式測試工具整合在一起,對外提供統(tǒng)一的 API。在 Android 2.3 以前的版本,Appium 會調用 Selendroid ,之后的版本會直接使用 UIAutomator,iOS 下使用 UIAutomation。Appium 還支持 FirefoxOS 的 UI 測試。

安裝 Appium

官網給出了命令行下的安裝方法。但實際上 Appium 有 GUI 版本,更適合在 Windows/MacOS 下使用。Windows 下需要安裝 .NET Framework。

  1. > brew install node      # get node.js 
  2. > npm install -g appium  # get appium 
  3. > npm install wd         # get appium client 
  4. > appium &               # start appium 
  5. > node your-appium-test.js 

Appium 需要依賴 Android SDK 編譯在手機端運行的兩個插件,因此需要首先安裝相應的 Android SDK 版本。這里直接使用了 Android Studio 中自帶的 SDK Manager。在 SDK Manager 中選擇和測試機相對應的 SDK Platform 和較新的 Build-tools,如果需要使用模擬器測試還要裝對應的 ARM/x86 System Image,以及 Intel HAXM Installer,用于加速 x86 虛擬機。Appium 使用 adb 來與目標機器通訊,因此對于真機和模擬器操作幾乎都是相同的,如何建立模擬器在此不再贅述。

安裝完成后需要在 Appium GUI 中配置 Android SDK 目錄,隨后選擇 Android,點擊 Launch 就可以啟動 Appium Server。

Appium Server 默認會監(jiān)聽 http://localhost:4723 ,用于 RPC 通訊。下面我們就可以打開熟悉的編程環(huán)境,編寫 UI 測試用例了。這里使用 Python 進行編寫,需要先安裝 Appium 的 Python Client ,然后再 python 中使用 appium.webclient 就可以連接 Appium server了。

  1. pip install Appium-Python-Client 

使用 Appium 進行 UI 控制

根據(jù)注釋修改相應屬性后即可運行測試。手機需要打開 ADB 調試,執(zhí)行完以下代碼后,Appium 會在手機上安裝 Appium Settings 和 Unlock 兩個程序,隨后微信會被啟動。

  1. from appium import webdriver 
  2.  
  3. desired_caps = {} 
  4.  
  5. desired_caps['platformName'] = 'Android' #測試平臺 
  6.  
  7. desired_caps['platformVersion'] = '5.1' #平臺版本 
  8.  
  9. desired_caps['deviceName'] = 'm3_note' #設備名稱,多設備時需區(qū)分 
  10.  
  11. desired_caps['appPackage'] = 'com.tencent.mm' #app package名 
  12.  
  13. desired_caps['appActivity'] = '.ui.LauncherUI' #app默認Activity 
  14.  
  15. dr = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #啟動Remote RPC 

Selenum Webdriver 使用了一種類似于 JS 中的 DOM 模型的方法來選擇頁面中的元素。dr 為當前正在活動的 activity 對象,可以使用 findElementByXXX 的方法來獲取 Activity 中的元素。所有 Element 后帶 s 的函數(shù),均獲得所有匹配的元素,不帶 s 的函數(shù)獲得***個匹配的元素。

查詢函數(shù)

1. findElement(s)ByName

在 Android 中基本沒用。Android UI 沒有 Name 這個屬性。有說可以使用 text 值獲取。但我并沒有成功

2. findElement(s)ByClassName

通過類名來獲取元素,用法如下:

  1. item_list = dr.find_elements_by_class_name("android.widget.LinearLayout"
  2. item_list[2].click() 

3. findElementById

通過 resource_id 來獲取元素,每個 Activity 中都是***的,用法如下

  1. t = dr.find_element_by_id("com.tencent.mm:id/f7"
  2. t.send_keys(wechatId) 

4. findElement(s)ByAccessbiltiyId

在 Android 上 AccessbilityID 實際就是 contentDescription 。這個屬性是為了方便視力受損人士使用手機所設置。開啟 TTS 后系統(tǒng)會朗讀相關控件的 contentDescription。

5. findElement(s)ByXPath

通過 XML Path 描述來尋找元素。我沒有成功的獲取到,可能是 XPath 寫的有問題。

  1. s = dr.find_element_by_xpath("//android.widget.TextView[contains(@text,'搜索')]"
  2. s.click() 

6. findElementByAndroidUIAutomator

通過 UIAutomator 的選擇器來獲取元素。因為 Appium 在 Android 上實際是調用的 UIAutomator,所以可以通過 UIAutomator 的選擇器來選擇元素。

  1. el = dr.find_element_by_android_ui_automator("new UiSelector().text(\"搜索\")"
  2. el.click() 

操作函數(shù)

操作函數(shù)用于操作選定的元素,有很多,以下僅列舉幾個,更多的請查閱手冊。

  • click
  • send_keys
  • clear

查詢函數(shù)返回的元素對象可以像 JS 中的 dom 元素一樣,繼續(xù)使用查詢函數(shù)來選定其子元素。用例如下。

  1. search = dr.find_element_by_id("com.tencent.mm:id/aqw").find_element_by_class_name("android.widget.RelativeLayout"
  2.  
  3. search.click() 

如何確定查詢規(guī)則

了解了相關的函數(shù)后,下面就應對 UI 進行定位了。如果是自己團隊開發(fā)的程序,推薦讓開發(fā)同學在所有的空間上都添加 resource_id 進行絕對定位。如果碰到沒有談價 resource_id 的元素,那就要使用別的辦法進行定位了。

1. UI Automator Viewer

UI Automator Viewer 是 Android 官方的 UI 定位工具,位于 sdk/tools 下。運行后會打開 viewer 界面。點擊獲取按鈕即可獲取當前正在運行的 Activity 的 UI 結構。

2. AppiumDriver getPageSource

AppiumDriver(Client) 可以很方便的獲得當前正在運行的 Activity 的 UI 描述,隨后可根據(jù)返回的 XML 文檔來尋找元素。

  1. print dr.page_source 

確定元素位置后,即可根據(jù)前述的 Find 方法來查找/選擇元素

編寫完整的測試代碼

正確的獲取元素之后便可以獲取元素相關的信息,隨后使用各語言常用的測試框架編寫測試即可,如 Java 的 JUnit,Nodejs 的 Mocha 等。

這里我使用 Appium 主要是為了模擬用戶點擊添加微信好友,所以完整的程序并沒有使用到測試框架。相關的 UI 元素獲取/操作方法供大家參考。

  1. # coding:utf-8 
  2. from appium import webdriver 
  3. from time import sleep 
  4.  
  5.  
  6. def addFriend(dr, id, dryRun=False): 
  7.     succ = False 
  8.     wechatId = str(id) 
  9.     dr.find_element_by_accessibility_id(r"更多功能按鈕").click() 
  10.     item_list = dr.find_elements_by_class_name("android.widget.LinearLayout"
  11.     try: 
  12.         item_list[2].click() 
  13.     except
  14.         print "Error! in item list len" 
  15.         return succ 
  16.     el = dr.find_element_by_class_name("android.widget.ListView"
  17.     item_list = el.find_elements_by_class_name("android.widget.LinearLayout"
  18.     try: 
  19.         item_list[1].click() 
  20.     except
  21.         print "Error! in item list len" 
  22.         return succ 
  23.     t = dr.find_element_by_id("com.tencent.mm:id/f7"
  24.     t.send_keys(wechatId) 
  25.     search = dr.find_element_by_id("com.tencent.mm:id/aqw").find_element_by_class_name("android.widget.RelativeLayout"
  26.     search.click() 
  27.     try: 
  28.         freq = dr.find_element_by_id('com.tencent.mm:id/aqq'
  29.         assert freq.text == u"操作過于頻繁,請稍后再試。" 
  30.         print "Frequency too high! Sleep 300s" 
  31.         sleep(60) 
  32.         return succ 
  33.     except
  34.         pass 
  35.  
  36.     try: 
  37.         dr.find_element_by_id('com.tencent.mm:id/a8x').click() 
  38.         addBtn = dr.find_element_by_id('com.tencent.mm:id/eu'
  39.         if not dryRun: 
  40.             addBtn.click() 
  41.             succ = True 
  42.         print "Success Send Requests:" + wechatId 
  43.     except
  44.         print "No Such User Or Already a Friend:" + wechatId 
  45.  
  46.     while True
  47.         try: 
  48.             dr.find_element_by_id('com.tencent.mm:id/fb').click() 
  49.         except
  50.             try: 
  51.                 dr.find_element_by_id('com.tencent.mm:id/f4').click() 
  52.             except
  53.                 break 
  54.     return True 
  55.  
  56. def resetActivity(dr, desired_caps): 
  57.     dr.start_activity(desired_caps['appPackage'], desired_caps['appActivity']) 
  58.  
  59. desired_caps = {} 
  60. desired_caps['platformName'] = 'Android' 
  61. desired_caps['platformVersion'] = '5.1' 
  62. desired_caps['deviceName'] = 'm3_note' 
  63. desired_caps['appPackage'] = 'com.tencent.mm' 
  64. desired_caps['appActivity'] = '.ui.LauncherUI' 
  65. print "Trying connect to phone..." 
  66. dr = {} 
  67. try: 
  68.     dr = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) 
  69. except Exception, e: 
  70.     print "Cannot Connect to phone :", e 
  71.     exit() 
  72. print "Successfully connect to phone." 
  73. print "Reading friend list..." 
  74. friendList = [] 
  75. fp = open("friends.txt"
  76. line = fp.readline().strip() 
  77. while line: 
  78.     friendList.append(line) 
  79.     line = fp.readline().strip() 
  80. print "Finish reading friends. Total: " + str(len(friendList)) 
  81. print "Wait for Wechat's splash screen...." 
  82. for i in range(0, 10): 
  83.     print 10 - i 
  84.     sleep(1) 
  85. succ_list = [] 
  86. fail_list = [] 
  87. for i in friendList: 
  88.     try: 
  89.         succ = addFriend(dr, i, dryRun=False
  90.         if succ: 
  91.             succ_list.append(i) 
  92.         else
  93.             fail_list.append(i) 
  94.     except
  95.         fail_list.append(i) 
  96.         resetActivity(dr, desired_caps) 
  97.  
  98. print "Succeed List:" 
  99. print "\n".join(succ_list) 
  100. print "Failed List:" 
  101. print "\n".join(fail_list) 
  102.  
  103. dr.close() 

 【編輯推薦】

責任編輯:武曉燕 來源: segmentfault
相關推薦

2021-10-18 12:01:17

iOS自動化測試Trip

2014-08-08 16:50:21

AB 測試安卓推送

2017-05-22 08:05:46

HBase阿里搜索實踐

2022-05-30 07:48:11

DevOps測試策略

2012-07-09 10:13:06

ibmdw

2024-09-25 10:10:35

2021-08-03 12:58:38

鴻蒙HarmonyOS應用

2011-04-18 12:52:37

自動化測試功能測試軟件測試

2012-05-08 16:40:36

Android

2014-03-24 13:39:51

2024-04-07 07:53:12

SpringWeb技術WebSocket

2019-11-26 18:00:59

系統(tǒng)運維架構

2024-04-08 07:28:27

PiniaVue3狀態(tài)管理庫

2018-08-30 09:00:00

開源Apache Kafk數(shù)據(jù)流

2019-04-09 15:02:36

OpenResty騰訊游戲營銷技術

2024-06-04 07:29:13

2022-10-14 16:18:40

MobileNetAndroid端模型訓練

2022-04-08 09:01:56

腳本Go應用單元

2010-10-16 15:46:49

動態(tài)更新UIAndroid

2020-07-08 10:01:07

SDP網絡安全安全框架
點贊
收藏

51CTO技術棧公眾號

yw.尤物在线精品视频| 人操人视频在线观看| 天天色天天射综合网| 欧美一区二区日韩一区二区| 国产真实老熟女无套内射| 日韩三级电影网| 久久精品99久久久| 欧美交受高潮1| 国产高清一区二区三区四区| 精品久久亚洲| 色一区在线观看| 久久观看最新视频| 免费成人av电影| 国产精品资源在线看| 97久久精品视频| 国产三级精品三级观看| 乱中年女人伦av一区二区| 欧美色手机在线观看| 9色porny| 免费人成在线观看播放视频| 99re这里都是精品| 国产一区欧美二区三区| 在线观看 中文字幕| 91欧美在线| 亚洲精品www久久久久久广东| 制服丝袜综合网| 天堂√中文最新版在线| 国产精品成人一区二区艾草| 欧美极品色图| 高h震动喷水双性1v1| 蓝色福利精品导航| 国产精品99导航| 91久久国产视频| 在线看片不卡| 久久精品99久久久香蕉| 日韩视频在线观看免费视频| 国产另类在线| 欧美日韩国产综合一区二区| 日本日本19xxxⅹhd乱影响| 国产cdts系列另类在线观看| 欧美国产乱子伦| 欧美日韩在线观看一区| 污污网站免费在线观看| 大尺度一区二区| 91精品国产一区二区三区动漫| 中国a一片一级一片| 久久久久久穴| 日本伊人精品一区二区三区介绍| 久久久久无码精品国产| 婷婷亚洲五月色综合| 一区二区三区亚洲| www在线观看免费视频| 一本久久青青| 亚洲色图激情小说| 成都免费高清电影| 综合伊思人在钱三区| 亚洲精选中文字幕| 五级黄高潮片90分钟视频| 全国精品免费看| 日韩精品久久久久久久玫瑰园| 在线免费观看污视频| 极品尤物一区| 精品小视频在线| 实拍女处破www免费看| 亚洲福利网站| 中文国产成人精品| 特级西西人体高清大胆| 99久久亚洲精品| 久久久精品一区二区| 天天色天天综合| 天天射成人网| 超在线视频97| 国产一级二级毛片| 亚洲一区欧美激情| 国产精品久久久久久久av大片| 中文 欧美 日韩| 精品一二三四在线| www国产亚洲精品| 午夜久久久久久久久久| 国产91色综合久久免费分享| 国产欧美在线一区二区| 亚洲欧美一区二区三| 国产三级精品三级| 精品91一区二区三区| 国产盗摄在线视频网站| 色婷婷av一区二区三区软件 | 婷婷中文字幕一区| 欧美成人网在线| 欧美三级一区二区三区| 老妇喷水一区二区三区| 亚洲wwwav| 香蕉久久国产av一区二区| 中文字幕国产一区| 国产青草视频在线观看| 免费观看成人性生生活片| 欧美一区二区三区在线观看| 日本黄色动态图| 久久免费大视频| 久久久久久午夜| 中文字幕理论片| 99天天综合性| 免费在线观看污污视频| 成人黄色动漫| 91精品午夜视频| 亚洲精品视频大全| 欧美日韩国产色综合一二三四| 欧美在线视频导航| 99在线观看精品视频| 国产亚洲一区二区三区| 免费的一级黄色片| 成人影院在线免费观看| 日韩av在线电影网| 午夜少妇久久久久久久久| 日韩电影在线一区二区三区| 国产精品久久久久久久久久久久冷 | 理论片午夜视频在线观看| 69成人精品免费视频| 在线免费观看成年人视频| 影音先锋日韩在线| 国产精品视频自在线| 日韩三级电影网| 亚洲国产一区二区在线播放| 爱豆国产剧免费观看大全剧苏畅| 国产99久久| 69久久夜色精品国产7777| 国产成人三级一区二区在线观看一| 国产午夜精品一区二区三区嫩草 | 极品尤物av久久免费看| 欧美一区1区三区3区公司| heyzo在线欧美播放| 日韩欧美在线123| 国产精品suv一区二区88| 天堂影院一区二区| 欧美成人在线免费观看| 蜜桃麻豆影像在线观看| 精品国产露脸精彩对白| 亚洲国产美女视频| 黑人巨大精品欧美黑白配亚洲| 日本一区二区三区四区在线观看 | 爱情岛论坛亚洲品质自拍视频网站| 欧美精品aⅴ在线视频| 自拍偷拍视频亚洲| 久久精品五月| 日韩福利视频| 日本欧美韩国| 中文欧美在线视频| 久久久久久av无码免费看大片| 久久久久国色av免费看影院| 国产精品动漫网站| 深爱激情久久| 国产精品丝袜久久久久久高清| 91免费在线| 欧美精品一卡两卡| 五月天av网站| 粉嫩一区二区三区在线看| 国产91沈先生在线播放| 国产精品超碰| 欧美在线观看网站| 番号集在线观看| 精品污污网站免费看| www.黄色com| 国产在线精品视频| 无码人妻精品一区二区蜜桃百度| 秋霞午夜一区二区三区视频| 精品少妇一区二区30p| 蜜桃91麻豆精品一二三区 | 青青草视频在线观看免费| 国产日韩高清在线| 日韩va在线观看| 亚洲视频久久| 欧美不卡三区| 91久久青草| 国外成人性视频| 国产视频福利在线| 欧美一区二区三区性视频| 激情综合网五月婷婷| 久久亚洲精精品中文字幕早川悠里 | 日本在线啊啊| 在线播放亚洲激情| 国产成人精品无码高潮| 五月激情六月综合| 国产又粗又黄又猛| 国产精品91xxx| 无码人妻h动漫| 午夜免费一区| 国内精品久久国产| 国产精品久久久久久久久免费高清 | 青青草91视频| 热久久最新地址| 亚洲第一论坛sis| 成人精品在线观看| 国产粉嫩在线观看| 精品国内自产拍在线观看| 免费观看a视频| 欧美日韩一区成人| 日韩精品手机在线| 亚洲欧洲日韩在线| 偷拍女澡堂一区二区三区| 国内精品伊人久久久久av一坑| 女人喷潮完整视频| 欧美在线不卡| 性刺激综合网| 日韩成人午夜| 91精品国产91久久久久青草| 日韩欧美一区二区三区免费观看 | 中文字幕日韩高清| 黄色一级大片在线免费看国产| 欧美亚一区二区| 三级黄色在线视频| 一区二区三区四区av| 在线免费观看视频| 99久久伊人网影院| 美女被爆操网站| 男女激情视频一区| 每日在线更新av| 亚洲性感美女99在线| 一区二区日本| 精品国产1区| 精品午夜一区二区| 中文字幕日韩高清在线| 成人黄色免费片| 主播大秀视频在线观看一区二区| 97国产suv精品一区二区62| 91精品久久| www.日韩av.com| jyzzz在线观看视频| 亚洲美女久久久| 亚洲aⅴ乱码精品成人区| 精品国产成人系列| www.国产麻豆| 欧美一级二级三级乱码| 国产视频www| 欧美日韩成人激情| 中日精品一色哟哟| 欧美探花视频资源| 最近日韩免费视频| 欧美日韩综合不卡| 在线免费看毛片| 欧美日韩日日骚| 一级黄色片免费看| 欧美高清你懂得| 国产精品久久久久久无人区| 欧美午夜寂寞影院| 亚洲最大成人av| 欧美日韩国产在线播放网站| 亚洲视频在线观看免费视频| 欧美日免费三级在线| www.五月婷婷.com| 欧美色精品在线视频| 亚洲永久精品视频| 91精品欧美综合在线观看最新| 96亚洲精品久久久蜜桃| 欧美一区二区精品在线| 亚洲av永久纯肉无码精品动漫| 日韩欧美三级在线| 欧美熟妇另类久久久久久不卡| 精品久久久久久久久久久院品网| 成人午夜视频一区二区播放| 亚洲精品久久久久久下一站| 免费在线观看一级毛片| 亚洲人成网站色ww在线| 日本免费视频在线观看| 欧美猛男性生活免费| 国产v日韩v欧美v| 日本欧美一二三区| 日日夜夜一区| 鬼打鬼之黄金道士1992林正英| 成人高潮a毛片免费观看网站| 精品一区日韩成人| 日本不卡高清| 国产黄色激情视频| 欧美一级久久| 久久久久久久久久久久久久久国产| 国产精品白丝jk白祙喷水网站| 又黄又爽的网站| 国产天堂亚洲国产碰碰| 强制高潮抽搐sm调教高h| 亚洲国产成人av网| 亚洲午夜无码久久久久| 日韩欧美一二三区| 久蕉在线视频| 久久九九免费视频| 妞干网免费在线视频| 国产精品爽爽ⅴa在线观看| 欧洲精品99毛片免费高清观看| 久久综合伊人77777麻豆| 久久精品高清| 国产不卡一区二区视频| 日韩电影在线免费看| 成年人看片网站| 国产欧美视频一区二区| 久久99久久久| 欧美色爱综合网| 色窝窝无码一区二区三区成人网站| 伊人久久精品视频| 懂色av一区| 成人激情视频在线观看| 免费看成人吃奶视频在线| 日本xxx免费| 日韩 欧美一区二区三区| 在线播放av网址| 中文字幕亚洲一区二区av在线| 日韩久久精品视频| 制服丝袜一区二区三区| 国产在线观看免费网站| 国内精品久久久久影院优 | 51精品在线| 91老司机在线| 国产区精品区| 国产淫片免费看| 成人网在线播放| 精品国产视频一区二区三区| 色婷婷精品大视频在线蜜桃视频| 俄罗斯嫩小性bbwbbw| 日韩在线观看精品| 在线成人视屏| 麻豆av一区二区| av不卡在线看| 欧美午夜精品一区二区| 自拍偷在线精品自拍偷无码专区| 精品久久久久久久久久久国产字幕| 精品国产亚洲在线| 亚洲七七久久综合桃花剧情介绍| 国产日韩欧美在线观看| 欧美码中文字幕在线| 日日碰狠狠躁久久躁婷婷| 91影院在线观看| 日产精品久久久久| 精品国精品自拍自在线| 色噜噜狠狠狠综合欧洲色8| 成人精品视频在线| 99久久激情| 九九热精品国产| 国产精品久久久久毛片软件| 亚洲男人天堂网址| 一区二区三欧美| 日本一区二区电影| 亚洲欧美日韩在线综合| 美女脱光内衣内裤视频久久影院| 一本色道久久综合亚洲精品图片 | 超碰97人人射妻| 久久这里都是精品| 日本视频在线观看免费| 日韩国产欧美精品在线| 日韩脚交footjobhd| 久久影院理伦片| 美女久久一区| 日本乱子伦xxxx| 欧美人伦禁忌dvd放荡欲情| 午夜小视频在线| 成人亚洲综合色就1024| 国产精品久久久久无码av| 久久综合在线观看| 一区二区三区中文字幕| 黄色www视频| 日本精品在线视频| 精品国产99| 一区二区三区四区毛片| 亚洲精品国产第一综合99久久| 亚洲精品第五页| 91av视频在线播放| 成人午夜国产| 香蕉视频xxxx| 精品久久久久久久久久久久久久| 三区在线视频| 91精品久久久久久久久久久久久| 91tv官网精品成人亚洲| 男女性杂交内射妇女bbwxz| 精品久久中文字幕| av播放在线| 99久久精品免费看国产一区二区三区| 一区在线免费观看| 无码少妇精品一区二区免费动态| 欧美日韩国产精品成人| 久久av色综合| 久久精品国产美女| 久久99精品一区二区三区| 免费在线观看黄视频| 日韩精品视频在线观看网址| 欧美另类激情| 国产69精品久久久久久久| 国产欧美日韩精品一区| 亚洲第一页在线观看| 国产成人一区二区三区小说| 影音先锋日韩精品| 中国毛片在线观看| 欧美一区二区成人| 丝袜美腿诱惑一区二区三区| 青青在线免费视频| 26uuu国产电影一区二区| 国产精品欧美激情在线| 国产91精品高潮白浆喷水| 一区二区三区在线电影| 可以直接看的无码av| 欧美一级高清片在线观看| 欧美日韩精品免费观看视完整| 日本精品福利视频| 欧美国产精品劲爆| 日韩在线观看视频一区| 91精品视频在线播放|