久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

python+appium+yaml移動端自動化測試框架實現詳解

瀏覽:111日期:2022-07-04 14:58:24

結構介紹

之前分享過一篇安卓UI測試,但是沒有實現數據與代碼分離,后期維護成本較高,所以最近抽空優化了一下。不想看文章得可以直接去Github,歡迎拍磚大致結構如下:

python+appium+yaml移動端自動化測試框架實現詳解

testyaml管理用例,實現數據與代碼分離,一個模塊一個文件夾

public 存放公共文件,如讀取配置文件、啟動appium服務、讀取Yaml文件、定義日志格式等

page 存放最小測試用例集,一個模塊一個文件夾

results 存放測試報告及失敗截圖

python+appium+yaml移動端自動化測試框架實現詳解

logs 存放日志

python+appium+yaml移動端自動化測試框架實現詳解

python+appium+yaml移動端自動化測試框架實現詳解

testcase 存放測試用例runtest.py 運行所有測試用例

yaml格式介紹

首先看下yaml文件的格式,之前也寫過一點關于yaml語法學習的文章testcase部分是重點,其中:

element_info:定位元素信息

find_type:屬性,id、xpath、text、ids

operate_type: click、sendkeys、back、swipe_up 為back就是返回,暫時就四種

上面三個必填,operate_type必填!!!!!!

send_content:send_keys 時用到

index:ids時用到

times: 返回次數或者上滑次數

testinfo: - id: cm001 title: 新增終端門店 execute: 1testcase: - element_info: 客戶 find_type: text operate_type: click - element_info: com.fiberhome.waiqin365.client:id/cm_topbar_tv_right find_type: id operate_type: click - element_info: com.fiberhome.waiqin365.client:id/custview_id_singletv_inputtext find_type: ids operate_type: send_keys send_content: auto0205 index: 0 - element_info: find_type: operate_type: swipe_up times: 1 - element_info: 提交 find_type: text operate_type: click - element_info: find_type: operate_type: back times: 1

代碼部分

公共部分

個人覺得核心的就是公共部分,相當于建房子,公共部分搞好了,后面僅僅是調用即可,建房子把架子搭好,后面就添磚加瓦吧。

讀取配置文件readconfig.py設置日志格式logs.py獲取設備GetDevices.py這幾個通用的就不做介紹了

讀取yaml文件 GetYaml.py主要用來讀取yaml文件

#coding=utf-8#author=’Shichao-Dong’ import sysreload(sys)sys.setdefaultencoding(’utf8’)import yamlimport codecs class getyaml: def __init__(self,path): self.path = path def getYaml(self): ’’’ 讀取yaml文件 :param path: 文件路徑 :return: ’’’ try: f = open(self.path) data =yaml.load(f) f.close() return data except Exception: print(u'未找到yaml文件') def alldata(self): data =self.getYaml() return data def caselen(self): data = self.alldata() length = len(data[’testcase’]) return length def get_elementinfo(self,i): data = self.alldata() # print data[’testcase’][i][’element_info’] return data[’testcase’][i][’element_info’] def get_findtype(self,i): data = self.alldata() # print data[’testcase’][i][’find_type’] return data[’testcase’][i][’find_type’] def get_operate_type(self,i): data = self.alldata() # print data[’testcase’][i][’operate_type’] return data[’testcase’][i][’operate_type’] def get_index(self,i): data = self.alldata() if self.get_findtype(i)==’ids’: return data[’testcase’][i][’index’] else: pass def get_send_content(self,i): data = self.alldata() # print data[’testcase’][i][’send_content’] if self.get_operate_type(i) == ’send_keys’: return data[’testcase’][i][’send_content’] else: pass def get_backtimes(self,i): data = self.alldata() if self.get_operate_type(i)==’back’ or self.get_operate_type(i)==’swipe_up’: return data[’testcase’][i][’times’] else: pass def get_title(self): data = self.alldata() # print data[’testinfo’][0][’title’] return data[’testinfo’][0][’title’]

啟動appium服務 StartAppiumServer.py主要是啟動appium并返回端口port,這個port在下面的driver中需要

#coding=utf-8#author=’Shichao-Dong’ from logs import logimport random,timeimport platformimport osfrom GetDevices import devices log = log()dev = devices().get_deviceName() class Sp: def __init__(self, device): self.device = device def __start_driver(self, aport, bpport): ''' :return: ''' if platform.system() == ’Windows’: import subprocess subprocess.Popen('appium -p %s -bp %s -U %s' %(aport, bpport, self.device), shell=True) def start_appium(self): ''' 啟動appium p:appium port bp:bootstrap port :return: 返回appium端口參數 ''' aport = random.randint(4700, 4900) bpport = random.randint(4700, 4900) self.__start_driver(aport, bpport) log.info( ’start appium :p %s bp %s device:%s’ % (aport, bpport, self.device)) time.sleep(10) return aport def main(self): ''' :return: 啟動appium ''' return self.start_appium() def stop_appium(self): ’’’ 停止appium :return: ’’’ if platform.system() == ’Windows’: os.popen('taskkill /f /im node.exe') if __name__ == ’__main__’: s = Sp(dev) s.main()

獲取driver GetDriver.pyplatformName、deviceName、appPackage、appActivity這些卸載配置文件config.ini文件中,可以直接通過readconfig.py文件讀取獲得。appium_port有StartAppiumServer.py文件返回

s = Sp(deviceName)appium_port = s.main() def mydriver(): desired_caps = { ’platformName’:platformName,’deviceName’:deviceName, ’platformVersion’:platformVersion, ’appPackage’:appPackage,’appActivity’:appActivity, ’unicodeKeyboard’:True,’resetKeyboard’:True,’noReset’:True } try: driver = webdriver.Remote(’http://127.0.0.1:%s/wd/hub’%appium_port,desired_caps) time.sleep(4) log.info(’獲取driver成功’) return driver except WebDriverException: print ’No driver’ if __name__ == '__main__': mydriver()

重新封裝find等命令,BaseOperate.py里面主要是一些上滑、返回、find等一些基礎操作

#coding=utf-8#author=’Shichao-Dong’ from selenium.webdriver.support.ui import WebDriverWaitfrom logs import logimport osimport time ’’’一些基礎操作:滑動、截圖、點擊頁面元素等’’’ class BaseOperate: def __init__(self,driver): self.driver = driver def back(self): ’’’ 返回鍵 :return: ’’’ os.popen('adb shell input keyevent 4') def get_window_size(self): ’’’ 獲取屏幕大小 :return: windowsize ’’’ global windowSize windowSize = self.driver.get_window_size() return windowSize def swipe_up(self): ’’’ 向上滑動 :return: ’’’ windowsSize = self.get_window_size() width = windowsSize.get('width') height = windowsSize.get('height') self.driver.swipe(width/2, height*3/4, width/2, height/4, 1000) def screenshot(self): now=time.strftime('%y%m%d-%H-%M-%S') PATH = lambda p: os.path.abspath( os.path.join(os.path.dirname(__file__), p) ) screenshoot_path = PATH(’../results/screenshoot/’) self.driver.get_screenshot_as_file(screenshoot_path+now+’.png’) def find_id(self,id): ’’’ 尋找元素 :return: ’’’ exsit = self.driver.find_element_by_id(id) if exsit : return True else: return False def find_name(self,name): ’’’ 判斷頁面是否存在某個元素 :param name: text :return: ’’’ findname = '//*[@text=’%s’]'%(name) exsit = self.driver.find_element_by_xpath(findname) if exsit : return True else: return False def get_name(self,name): ’’’ 定位頁面text元素 :param name: :return: ’’’ # element = driver.find_element_by_name(name) # return element findname = '//*[@text=’%s’]'%(name) try: element = WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_xpath(findname)) # element = self.driver.find_element_by_xpath(findname) self.driver.implicitly_wait(2) return element except: self.screenshot() log.error(’未定位到元素:’+’%s’)%(name) def get_id(self,id): ’’’ 定位頁面resouce-id元素 :param id: :return: ’’’ try: element = WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_id(id)) # element = self.driver.find_element_by_id(id) self.driver.implicitly_wait(2) return element except: self.screenshot() log.error(’未定位到元素:’+’%s’)%(id) def get_xpath(self,xpath): ’’’ 定位頁面xpath元素 :param id: :return: ’’’ try: element = WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_xpath(xpath)) # element = self.driver.find_element_by_xpath(xpath) self.driver.implicitly_wait(2) return element except: self.screenshot() log.error(’未定位到元素:’+’%s’)%(xpath) def get_ids(self,id): ’’’ 定位頁面resouce-id元素組 :param id: :return:列表 ’’’ try: # elements = self.driver.find_elements_by_id(id) elements = WebDriverWait(self.driver, 10).until(lambda x: x.find_elements_by_id(id)) self.driver.implicitly_wait(2) return elements except: self.screenshot() log.error(’未定位到元素:’+’%s’)%(id) def page(self,name): ’’’ 返回至指定頁面 :return: ’’’ i=0 while i<10: i=i+1 try: findname = '//*[@text=’%s’]'%(name) self.driver.find_element_by_xpath(findname) self.driver.implicitly_wait(2) break except : os.popen('adb shell input keyevent 4') try: findname = '//*[@text=’確定’]' self.driver.find_element_by_xpath(findname).click() self.driver.implicitly_wait(2) except: os.popen('adb shell input keyevent 4') try: self.driver.find_element_by_xpath('//*[@text=’工作臺’]') self.driver.implicitly_wait(2) break except: os.popen('adb shell input keyevent 4')

Operate.py我認為最關鍵的一步了,后面沒有page都是調用這個文件進行測試,主要是根據讀取的yaml文件,然后進行if...else...判斷,根據對應的operate_type分別進行對應的click、sendkeys等操作

#coding=utf-8#author=’Shichao-Dong’ from GetYaml import getyamlfrom BaseOperate import BaseOperate class Operate: def __init__(self,path,driver): self.path = path self.driver = driver self.yaml = getyaml(self.path) self.baseoperate=BaseOperate(driver) def check_operate_type(self): ’’’ 讀取yaml信息并執行 element_info:定位元素信息 find_type:屬性,id、xpath、text、ids operate_type: click、sendkeys、back、swipe_up 為back就是返回,暫時就三種 上面三個必填,operate_type必填!!!!!! send_content:send_keys 時用到 index:ids時用到 times: :return: ’’’ for i in range(self.yaml.caselen()): if self.yaml.get_operate_type(i) == ’click’: if self.yaml.get_findtype(i) == ’text’: self.baseoperate.get_name(self.yaml.get_elementinfo(i)).click() elif self.yaml.get_findtype(i) == ’id’: self.baseoperate.get_id(self.yaml.get_elementinfo(i)).click() elif self.yaml.get_findtype(i) == ’xpath’: self.baseoperate.get_xpath(self.yaml.get_elementinfo(i)).click() elif self.yaml.get_findtype(i) == ’ids’: self.baseoperate.get_ids(self.yaml.get_elementinfo(i))[self.yaml.get_index(i)].click() elif self.yaml.get_operate_type(i) == ’send_keys’: if self.yaml.get_findtype(i) == ’text’: self.baseoperate.get_name(self.yaml.get_elementinfo(i)).send_keys(self.yaml.get_send_content(i)) elif self.yaml.get_findtype(i) == ’id’: self.baseoperate.get_id(self.yaml.get_elementinfo(i)).send_keys(self.yaml.get_send_content(i)) elif self.yaml.get_findtype(i) == ’xpath’: self.baseoperate.get_xpath(self.yaml.get_elementinfo(i)).send_keys(self.yaml.get_send_content(i)) elif self.yaml.get_findtype(i) == ’ids’: self.baseoperate.get_ids(self.yaml.get_elementinfo(i))[self.yaml.get_index(i)].send_keys(self.yaml.get_send_content(i)) elif self.yaml.get_operate_type(i) == ’back’: for n in range(self.yaml.get_backtimes(i)): self.baseoperate.back() elif self.yaml.get_operate_type(i) == ’swipe_up’: for n in range(self.yaml.get_backtimes(i)): self.baseoperate.swipe_up() def back_home(self): ’’’ 返回至工作臺 :return: ’’’ self.baseoperate.page(’工作臺’)

公共部分的代碼就介紹這么多,在編寫這個框架的時候,大部分精力都花在這部分,所以個人覺得還是值得好好研究的

Page部分

page部分是最小用例集,一個模塊一個文件夾,以客戶為例,目前寫了兩個用例,一個新增,一個排序,文件如下:

python+appium+yaml移動端自動化測試框架實現詳解

代碼如下,非常的簡潔,

import sysreload(sys)sys.setdefaultencoding(’utf8’)import codecs,osfrom public.Operate import Operatefrom public.GetYaml import getyaml PATH = lambda p: os.path.abspath( os.path.join(os.path.dirname(__file__), p))yamlpath = PATH('../../testyaml/cm/cm-001addcm.yaml') class AddcmPage: def __init__(self,driver): self.path = yamlpath self.driver = driver self.operate = Operate(self.path,self.driver) def operateap(self): self.operate.check_operate_type() def home(self): self.operate.back_home()

運行用例

這部分用了unittest,運行所有測試用例和生成報告。一個模塊一個用例,以客戶為例:CmTest.py

from page.cm.CmAddcmPage import AddcmPagefrom page.cm.CmSortcmPage import SortcmPage from public.GetDriver import mydriverdriver = mydriver() import unittest,timeclass Cm(unittest.TestCase): def test_001addcm(self): ’’’ 新增客戶 :return: ’’’ add = AddcmPage(driver) add.operateap() add.home() def test_002sortcm(self): ’’’ 客戶排序 :return: ’’’ sort = SortcmPage(driver) sort.sortlist() sort.home() def test_999close(self): driver.quit() time.sleep(10) if __name__ == '__main__': unittest.main()

首先從page層將需要運行的用例都import進來,然后用unittest運行即可。如果想要運行所有的測試用例,需要用到runtest.py

import time,osimport unittestimport HTMLTestRunnerfrom testcase.CmTest import Cm def testsuit(): suite = unittest.TestSuite() suite.addTests([unittest.defaultTestLoader.loadTestsFromTestCase(Cm), ]) # runner = unittest.TextTestRunner(verbosity=2) # runner.run(suite) now=time.strftime('%y-%m-%d-%H-%M-%S') PATH = lambda p: os.path.abspath( os.path.join(os.path.dirname(__file__), p) ) dirpath = PATH('./results/waiqin365-') filename=dirpath + now +’result.html’ fp=open(filename,’wb’) runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=’waiqin365 6.0.6beta test result’,description=u’result:’) runner.run(suite) fp.close() if __name__ =='__main__': testsuit()

這邊的思路差不多,也是先導入再裝入suite即可

總結

就目前而言,暫時算是實現了數據與用例的分離,但是yaml的編寫要求較高,不能格式上出錯。同時也有一些其他可以優化的地方,如:

對彈窗的判斷 斷開后重連機制 失敗后重跑機制

到此這篇關于python+appium+yaml移動端自動化測試框架實現詳解的文章就介紹到這了,更多相關python appium yaml 自動化測試 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 狠狠综合久久av一区二区老牛 | 免费在线观看毛片网站 | 成人aaaa | 日韩精品一区二区三区中文在线 | 欧美精品一区二区三区免费视频 | 毛片网站大全 | 国产成人精品一区二区三区视频 | 欧美日韩精品一区二区三区在线观看 | 久久久国产视频 | www.com欧美| 91精品国产91久久久久久 | 亚洲精品视频在线 | 狠狠夜夜 | 日韩一区二区三区在线 | 一区二区三区国产免费 | 精品久久久久久亚洲综合网 | 国产成人久久精品麻豆二区 | 国产精品综合 | 婷婷激情五月 | 成人在线看片网站 | 天堂一区二区三区 | 91久久精品一区二区二区 | 久久99精品久久久久久琪琪 | 国产91富婆养生按摩会所 | 羞羞视频在线观看免费 | 亚洲黄网在线观看 | 亚洲每日更新 | 天堂资源在线 | 看真人视频a级毛片 | 久久久国产一区二区 | 国产精品第一国产精品 | 欧美日韩国产精品一区二区亚洲 | 国产精品毛片一区二区在线看 | 91精品国产综合久久国产大片 | www.国产精品| 一区二区三区在线播放 | 成人国产免费视频 | 在线看一级片 | 三级视频网站 | 国产羞羞视频免费在线观看 | 国产亚洲一区二区在线 | 欧美激情视频一区二区三区在线播放 | 国产精品地址 | 国产精品免费观看 | 国产探花在线精品一区二区 | 亚洲精品免费在线观看 | 欧美成人黑人xx视频免费观看 | 欧美成人在线免费视频 | 天天干天天插天天 | 久久社区| 久久波多野结衣 | 欧美淫视频| 免费黄色在线观看 | 成人一区二区三区四区 | 午夜影院在线观看免费 | 国产精品亚洲视频 | 国产精品美乳一区二区免费 | 在线免费视频一区 | 国产亚洲网站 | 久久久久免费精品视频 | 色欧美日韩 | 亚洲免费视频网站 | 在线观看www | 国产精品视频久久 | 狠狠干美女 | 影视一区二区 | 在线观看免费视频亚洲 | 国产偷国产偷精品高清尤物 | 久久精品视频在线播放 | 在线观看免费黄色片 | 午夜日韩| 亚洲毛片在线 | 精品久久久久久久久久久久久久 | 久久网国产 | 色婷婷久久一区二区三区麻豆 | 亚洲中午字幕在线观看 | 久久精美视频 | 久久综合热 | 男女18免费网站视频 | 日本久久久一区二区三区 | 天天爽夜夜爽夜夜爽精品视频 | 国产午夜视频 | 亚洲网在线 | 老司机深夜福利视频 | 美国一级黄色片 | 日日夜夜摸 | 成人涩涩日本国产一区 | 日本一级毛片免费看 | 亚洲一区二区在线免费观看 | 亚洲欧洲精品一区二区 | 男人天堂视频网 | 欧美日韩a v| 午夜精品久久久久久久星辰影院 | 国产欧美精品一区二区三区四区 | 中文字幕av一区二区三区 | 中文字幕精品一区二区三区精品 | 伊人国产在线 | 国产96在线观看 | 亚洲人在线 | 午夜午夜精品一区二区三区文 | 91久久久久久久久久久久久久久久 | 精品久久久久久亚洲综合网 | 国产精品伦一区二区三级视频 | 日韩高清一区 | 国产精品不卡视频 | 国产精品日产欧美久久久久 | 日本不卡高字幕在线2019 | 中国特黄毛片 | 日韩中文字幕在线 | 在线观看国产一区 | 99久久免费精品国产男女性高好 | 欧美久久久久 | 成人三级在线 | 中文字幕日韩欧美 | 久久久高清 | 成人免费看电影 | 国产成人久久精品一区二区三区 | 精品久久一区二区三区 | 成人在线看片网站 | 日韩成人在线观看 | 成人精品视频在线 | 成人欧美一区二区三区在线播放 | 久久久国产一区二区三区 | 国产精品久久久一区二区 | 精品999www| 91久久| 午夜影院免费 | 天天操天天插 | 亚洲精品中文字幕在线观看 | 国产欧美一区二区 | 欧美区国产区 | 国产一级免费在线 | 欧美一级特黄aaaaaaa视频片 | 久久久久久亚洲 | 国产高潮失禁喷水爽网站 | 日韩欧美一区二区三区视频 | 亚洲色图p | 99久久国产综合精品女不卡 | 久久综合一区二区 | 亚洲精品国精品久久99热 | 精品日韩一区二区 | 亚洲欧美一区二区三区在线 | 国产精品久久久久久久久久久久久久 | 欧美激情一区二区 | 色噜噜在线 | 欧美精品一区二区三区四区 | 国产精品亚洲第一区在线暖暖韩国 | 久久精品99 | 中文字幕a视频 | 亚洲成年| 精品国产视频 | 男女中文字幕 | 亚洲免费在线视频 | 羞羞视频免费在线观看 | 成人国产精品久久久 | 一区二区三区亚洲精品国 | 久久久久久亚洲 | 国产一区二区三区四区五区 | 色视频在线免费观看 | 午夜黄色影院 | 日日摸天天做天天添天天欢 | 黑人巨大精品欧美黑白配亚洲 | 日本亚洲国产一区二区三区 | 亚洲高清视频在线 | 日韩精品99久久久久中文字幕 | 国产精品免费一区 | 国产精品一区二区在线 | 先锋资源av在线 | 久久国产一区二区三区 | 一区二区在线影院 | 日韩成人影院 | 国产一区www| 亚洲欧美日韩另类精品一区二区三区 | 久久叉 | 欧美一a一片一级一片 | 国产三级一区二区 | 三级在线视频 | 欧美日韩一 | 视频二区 | 性高湖久久久久久久久aaaaa | 男人久久天堂 | 成人在线视频一区 | 久久在线视频 | 美女二区 | 日韩一区二区成人 | 日韩欧美视频 | 亚洲成人av电影 | 久久99精品久久久久久 | 色综合天天综合网国产成人网 | 国产精品久久久久久久久久久小说 | 欧美激情精品久久久久久变态 | 国产乱码精品一区二区三区忘忧草 | 日韩欧美一级二级 | 亚洲成人av| 手机在线不卡av | 天天天天天天天操 | 亚洲国产1区 | 综合久久综合久久 | 色欧美片视频在线观看 | 国产特黄一级 | 国产欧美精品一区二区三区 | 极品久久 | 亚洲www啪成人一区二区 | 国产精品一区二区三区免费 | 日韩一二三区 | 久久久精品久久久久 | 午夜影视| 天堂中文网官网 | 成人免费淫片aa视频免费 | 亚洲天堂一区二区 | 91精品国产91综合久久蜜臀 | 久久亚洲高清 | 中国特级黄色片 | 国产激情一区二区三区 | 午夜视频一区二区三区 | 国产精品二区一区二区aⅴ污介绍 | 精品国产1区2区3区 在线国产视频 | 国产一级色 | 国产视频自拍一区 | 麻豆久久久久久 | 日韩成人在线免费视频 | 婷婷五月在线视频 | 久久精品免费观看视频 | 精品久久一区二区 | zzzzyyyy精品国产 | 国产一区二区三区精品久久久 | 国产精品久久久久一区二区三区 | 成人a视频| 涩涩视频观看 | 欧美日本一区 | 亚洲日本欧美日韩高观看 | 丁香婷婷在线观看 | 亚洲视频在线观看网址 | 毛片激情永久免费 | 久久综合伊人 | 亚洲综合福利视频 | 国产一区二区三区视频在线观看 | 视频一区在线 | 国产午夜精品久久久久久久 | 中文字幕亚洲欧美 | 日韩电影在线一区 | 性色视频在线观看 | 久国产精品 | 亚洲一区 中文字幕 | 婷婷色5月 | 青青草在线视频免费观看 | 国内精品一级毛片国产99 | 欧美一级做性受免费大片免费 | 中文字幕一二区 | 久久久久久亚洲精品 | 久久久免费 | 成人精品鲁一区一区二区 | 国产乱码精品一区二区三区爽爽爽 | 91精品久久久久久久久久入口 | 中文字幕加勒比 | 午夜免费福利电影 | 91精品国产综合久久久久久丝袜 | 男人天堂亚洲天堂 | 综合色婷婷一区二区亚洲欧美国产 | 亚洲美女久久 | 涩久久| 毛片大全 | 国产欧美在线视频 | 日韩国产欧美视频 | 国产农村妇女精品 | 91精品国产免费 | 国产高清免费 | 午夜婷婷激情 | 成人免费视频观看视频 | 亚洲第一av | 日韩福利影院 | 三级欧美在线观看 | a级黄色毛片免费观看 | 爱爱视频在线 | 国产精品久久久久久吹潮 | 国产精品免费看 | 国产高清在线观看 | www.99re| 欧美一区二区三区精品 | 色噜噜一区二区 | 一区日韩| 亚洲综合无码一区二区 | 免费一二区 | 久久都是精品 | 91视频在线观看 | 九九热这里 | 亚洲精品电影网在线观看 | 日韩午夜免费视频 | 国产亚洲久久 | 日韩av免费在线观看 | 日韩在线免费电影 | 国产精品a一区二区三区网址 | 欧美炮房| 亚洲精品一区二区在线观看 | 国产资源在线观看 | 一级黄色大片视频 | 久久精品国产91精品亚洲高清 | 免费毛片一区二区三区久久久 | 亚洲高清视频在线观看 | 国产精品美女久久久久久久久久久 | 精品视频在线免费观看 | 欧美 日韩 中文字幕 | 精品国产乱码久久久久久1区2区 | 国产日韩精品一区二区在线观看播放 | 四虎影院在线看 | 亚洲狠狠爱一区二区三区 | 亚洲网站在线观看 | 国产一区二区三区免费 | 亚洲一区二区三 | 婷婷网址 | 青青久在线视频 | 久久免费电影 | 99re在线视频 | 国产精品99一区二区三区 | 91在线观看 | av一区二区在线观看 | 亚洲精品一区二区 | 97爱爱视频 | www.伊人.com| 久久99一区二区 | 国产精品天堂 | 黄色一级片黄色一级片 | www日本在线 | 国产精品一区二区av | 国产精品污www在线观看 | 中文字幕在线观看亚洲 | 黄色一级免费观看 | 黄久久久| 91精品国产91久久久久久 | 久在线视频| 久草 在线 | 噜噜噜视频在线观看 | 久久精品国产免费 | 动漫泳衣美女 | 成年人av网站 | 久久激情网 | 国产精品成人3p一区二区三区 | 婷婷亚洲综合 | 伊人色综合久久久天天蜜桃 | 精品国产鲁一鲁一区二区在线观看 | 亚洲高清在线 | 麻豆色呦呦 | 视频在线一区二区 | 二区免费视频 | 国产一级免费在线观看 | 免费欧美 | 日本一区二区视频 | 欧美激情国产日韩精品一区18 | 99热福利 | 日韩欧美精品一区二区三区 | 精品国产乱码久久久久久1区2区 | 国产精品成人国产乱一区 | 欧美日韩免费看 | 91久久国产综合久久91精品网站 | 羞羞视频网站在线看 | 久久国产精品视频一区 | 欧美xxxx网站 | 国产午夜精品一区二区三区嫩草 | 欧美精品成人在线视频 | 国产精品久久久久久久一区探花 | 精品国产影院 | 狠狠91 | 国产精品99在线观看 | 久在线看| 欧美一区二区三区在线观看视频 | 国产裸体永久免费视频网站 | 一区二区国产精品 | 国产精品1页 | 国产一级色 | 欧美 日韩 国产 成人 在线 | 一区免费看| 国产精品粉嫩白浆在线观看 | 天天综合网网欲色 | 一区自拍| 久久久免费电影 | 色天天久久 | 色婷婷综合久久久中文字幕 | 日韩欧美一区二区视频 | 欧美一区| 无码日韩精品一区二区免费 | 日本成人在线视频网站 | 国产一区二区免费 | 久久全国免费视频 | 久久综合热 | 福利影院在线观看 | 亚洲无吗天堂 | 在线观看欧美日韩 | 激情亚洲 | 国产成人网 | 午夜私人影院在线观看 | 干狠狠| 色橹橹欧美在线观看视频高清 | 天天操夜夜操av | 69久久久 | 欧美精品网 | 欧美日韩中文字幕 | 精品一区二区在线观看 | 成人免费视频观看视频 | 另类色 | 久久福利电影 | 久久久久国产精品一区二区三区 | 久久亚洲欧美日韩精品专区 | 亚洲精区 | 伊人青青久 | 久久久精品国产 | av成人在线观看 | 手机看片在线 | 丝袜 亚洲 另类 欧美 综合 | 狠狠躁夜夜躁人人爽天天天天97 | 亚洲成人精品一区 | 在线欧美a | 色综久久 | 日韩五码在线 | 国产成人午夜高潮毛片 | 国产成人av综合 | 日韩欧美在线视频观看 | 日日骚视频 | 91精品国产乱码久久久久久久久 | 国产精品久久久久国产a级 国产精品欧美一区二区三区不卡 | 日韩在线一区二区 | 在线成人免费观看www | 欧美精品网站 | 老师的朋友2 | 最新日韩在线观看视频 | 亚洲国产精品成人 | 国产精品久久久久久久久免费 | 亚洲一级黄色 | 亚洲男人天堂2023 | 国产一极毛片 | 国产精品网站在线观看 | 亚洲精品视 | 精品久久久久久久久久 | 蜜桃视频麻豆女神沈芯语免费观看 | 国产精品久久久久久久美男 | 欧美一区二区在线 | 国产精品99久久久久 | 成人免费看片 | 欧美日韩精品在线 | 成人在线播放 | 中文字幕日韩欧美一区二区三区 | 亚洲一区二区三区久久 | 成人欧美日韩一区二区三区 | 国产一区久久 | 一区二区三区久久 | 欧美综合一区二区 | 国产一级黄 | 婷婷伊人 | 色吊丝在线永久观看最新版本 | 99免费视频 | 日本美女影院 | 一区二区三区在线不卡 | 一区二区三区在线播放 | 在线观看国产视频 | 色噜噜色综合 | 国产视频三区 | 日韩视频―中文字幕 | 国产一区二区三区久久久久久久久 | 犬夜叉在线观看 | 可以免费在线观看av的网站 | 操操操日日日 | 999精品视频 | 杏导航aⅴ福利网站 | 久久久久亚洲一区二区三区 | 在线播放国产一区二区三区 | 久久免费精品 | 国产一区国产二区在线观看 | 狠狠干av| 97国产资源| 久久成人一区二区 | 成人免费久久 | www国产亚洲精品久久网站 | 国产精品99在线观看 | 久草视频在线资源站 | 国产一区999 | 91久久九色 | 日批的视频 | 国产精品久久久久久久久久妞妞 | 男女羞羞视频在线免费观看 | 亚洲精品一二区 | 久草电影网 | 欧美一级特 | 亚洲精品久久久久999中文字幕 | 神马午夜 | 日本不卡高字幕在线2019 | 国产人妖视频 | 久草毛片 | 国产婷婷色一区二区三区 | 91久久久久久久久久久久久久 | 国产成人精品午夜视频免费 | 黄色高清视频在线观看 | 亚洲一区二区在线播放 | 99在线免费视频 | 国产精品久久久久永久免费观看 | 成人片网址| 日韩视频在线观看 | 午夜精品久久久久99蜜 | 一级片欧美 | 亚洲精品中文字幕在线观看 | 伊人网在线视频免费观看 | 99久久久国产精品 | 久久亚洲欧美日韩精品专区 | 久久免费精品视频 | 国产精品久久久久aaaa九色 | 久久女人 | 一区在线视频 | 中文字幕国产 | 97伦理网 | 91免费观看国产 | 欧美a一级 | 国产精品成人3p一区二区三区 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 九九亚洲视频 | 精品中文字幕在线观看 | 欧美日韩国产一区二区在线观看 | 国产日韩视频在线播放 | 免费视频一区二区三区在线观看 | 国产高清精品一区二区三区 | 黄网址在线观看 | www.成人在线视频 | 国产精品视频久久久 | 性毛片| 美女一区二区三区在线观看 | 日日爱视频 | 日韩欧美国产精品 | 午夜国产 | 不卡一区| 日本精品一区 | 2024天天干| 日韩精品91爱爱 | 性xxxxxxxxx18欧美| 天天爽夜夜爽夜夜爽精品视频 | 在线观看亚洲一区二区 | 播放一级黄色片 | 中文字幕在线观看免费视频 | 可以免费看黄的网站 | 日本福利视频网 | 色爱av | 婷婷久久综合九色综合绿巨人 | 日韩国产欧美视频 | 成人免费视频视频 | 国产精品3区 | 国产精品毛片一区二区三区 | 日本涩涩网站 | 五月天狠狠爱 | 一级a性色生活片久久毛片 夜夜视频 | av在线一区二区三区 | 在线观看欧美成人 | 免费观看视频毛片 | 成人免费影院 | 一级毛片免费网站 | 亚洲免费观看视频 | 久久精品视频亚洲 | 欧美成人h版在线观看 | 一区二区精品视频在线观看 | 黄色片免费看 | 久久国产精品一区二区三区 | 玖玖综合网| 91久久精品国产亚洲a∨麻豆 | 色国产精品 | 色久在线 | 欧美日韩在线不卡 | 午夜免费影院 | 亚洲人成网站999久久久综合 | 干干日日 | 欧美中文在线 | 久久久精品久久久久久 | 欧美精品日韩 | 在线观看国产 | 国产精品久久久久久久7电影 | 亚洲精品电影 | 91亚洲狠狠婷婷综合久久久 | 日韩一区二区三区在线观看 | 精品免费国产一区二区三区 | 日韩一区二区在线观看 | 亚洲国产精品成人久久久 | 麻豆av电影在线观看 | 欧美伦理电影一区二区 | 中文字幕毛片 | 精品国产青草久久久久福利 | 精品超碰| 欧美在线观看一区 | 黄网站在线播放 | 密室大逃脱第六季大神版在线观看 | 中文无吗| 亚洲精选国产 | 日韩毛片在线观看 | 国产一级免费视频 | 成人免费大片黄在线播放 | 久久久国产精品视频 | 成人在线高清 | 欧美久久免费观看 | 高清av一区| 日本一区二区不卡 | 天天拍天天操 | 暖暖av| xnxx 美女19| www.国产高清 | 精品美女久久久 | 亚洲国产高清高潮精品美女 | 在线一区观看 | 欧美日韩一区二区中文字幕 | 亚洲精选久久久 | 欧美日一区二区 | 日韩中文字幕视频 | 国产精品成人一区二区 | 成人av在线看 | 黄色毛片免费看 | 国产日韩欧美 | 欧美精品免费在线观看 | 日韩一级黄色大片 | 亚洲国产午夜视频 | 久久精品国产免费 | 91视频.com| 欧美a网| 成人a在线视频 |