国产精品亚洲色图_91精品国产免费自在线观看_亚洲欧美在线观看91偷拍_亚洲免费资源

Python 自動化測試的配置層實現方式對標與落地 最新

2023-06-16 16:37:13       來源:博客園

Python中什么是配置文件,配置文件如何使用,有哪些支持的配置文件等內容,話不多說,讓我們一起看看吧~

1 什么是配置文件?

配置文件是用于配置計算機程序的參數和初始化設置的文件,如果沒有這些配置程序可能無法運行或是影響運行(運行速度、便捷性等),使用配置文件的好處在于,部分內容以及環境運行時只需要修改配置文件的參數內容,而無需去代碼里查找并修改,提高便捷性、提高可維護性。


(資料圖片僅供參考)

2 配置文件有哪幾種?

配置主要有四種形式:

第一種是YAML、JSON、XML、TOML、INI、Linux系統中的.bashrc一類,主要應用于軟件測試領域,在軟件測試的領域行業中,大多數公司采用最新的YAML形式來作為配置文件,例如數據庫地址、用例數據等內容的存放,而少部分公司仍然采用舊的INI配置形式第二種是excel表格的形式,在excel表格中會有固定的title代表每個字段列的含義,有多列,以此來進行配置,多用于游戲領域中,在游戲行業大量使用excel表格的形式,已經是一個常態了。第三種是py文件,py文件對于一個純Python項目而言是非常方便的,它不需要做數據的讀取操作,只需要進行導入即可,不好的點在于,沒有YAML這一類靈活,YAML配置文件無論是Python、Java等語言,都是支持的,且數據類型支持很多,而py的配置文件,就只能用作于python,有一定的局限性。第四種是txt文本格式,通過讀取的方式來識別到txt文本內容,通常而言是測開或者測試工程師制作的簡便工具,供給業務層面的測試人員進行使用,降低了YAML這種配置的理解難度,也避免了打開excel的緩慢,用輕量級txt來代替是一個不錯的選擇。2.1 ini

python3自帶的ini.ini 文件是Initialization File的縮寫,即初始化文件,是windows的系統配置文件所采用的存儲格式,統管windows的各項配置

2.1.1 ini文件的定義

.ini 文件通常由節(Section)、鍵(key)和值(value)組成。具體形式如下:

db.ini[mysql]host = 127.0.0.1port = 3306user = rootpassword = 123456database = test
2.1.2 python讀取ini文件

使用python內置的 configparser 標準庫進行解析ini文件。read() 讀取文件內容 items() 獲取指定節的所有鍵值對

# -*- coding: utf-8 -*-""" * @Author       : wxy * @Date         : 2022-08-24 11:11:06 * @Description  : 讀取ini文件 * @LastEditTime : 2022-08-24 11:11:06"""from configparser import ConfigParserfrom pprint import pprintimport pymysql# ini文件路徑ini_file = "./db.ini"# 讀取ini的節(Section)db_name = "mysql"# configparser實例化text = ConfigParser()# 讀取ini文件內容text.read(ini_file)# text.items()返回list,元素為tuple,元組格式為 key,valuedb_tuple = text.items(db_name)print(db_tuple)# 將元組轉換成dictdb_dict = dict(text.items(db_name))print(db_dict)
2.2 json

JSON(JavaScript Object Notation,) 是一種輕量級的數據交換格式。

2.2.1 json文件的定義

簡單的json示例

{        "mysql": {            "host": "127.0.0.1",            "port": 3306,            "user": "root",            "password": "123456",            "database": "test"        }    }
2.2.2 python讀取json文件

load() 從json文件中讀取json格式數據loads() 將字符串類型數據轉化為json格式數據dump() 將json格式數據保存到文件dumps() 將json格式數據保存為字符串類型

# -*- coding: utf-8 -*-""" * @Author       : wxy * @Date         : 2022-8-24 11:39:44 * @Description  : 讀取json文件 * @LastEditTime : 2022-8-24 11:39:44"""import jsonfrom pprint import pprintimport pymysqljson_file = "./db.json"db_name = "mysql"web = "web"with open(json_file) as f:    cfg = json.load(f)[db_name]    print(cfg)with open(json_file) as f:    cfg = json.load(f)[web]    print(cfg["user"])
2.3 toml

TOML 是 Github 聯合創始人 Tom Preston-Werner 所提出的一種配置文件格式,是一種旨在成為一個小規模、易于使用的語義化的配置文件格式,它被設計為可以無二義性的轉換為一個哈希表。

2.3.1 定義toml文件

語法:TOML的語法廣泛地由key = “value”、[節名]、#注釋構成。支持以下數據類型:字符串、整形、浮點型、布爾型、日期時間、數組和圖表。

# db.toml[mysql]    [mysql.config]    host     = "127.0.0.1"    user     = "root"    port     = 3306    password = "123456"    database = "test"    [mysql.parameters]    pool_size = 5    charset   = "utf8"    [mysql.fields]    course_cols = ["cno", "cname", "ccredit", "cdept"]
2.3.2 python讀取toml文件

使用外部庫 toml 解析toml文件

# -*- coding: utf-8 -*-""" * @Description  : 讀取toml文件 * @LastEditTime : 2022-08-14 11:31:07"""import tomlfrom pprint import pprintimport pymysqltoml_file = "./db.toml"cfg = toml.load(toml_file)["mysql"]pprint(cfg)
2.4 yaml

YAML(YAML Ain’t a Markup Language”, YAML不是一種標記語言) 格式是目前較為流行的一種配置文件,它早在 2001 由一個名為 Clark Evans 的人提出;同時它也是目前被廣泛使用的配置文件類型。

2.4.1 定義yaml文件
# db.yamlmysql:  config:    host: "127.0.0.1"    port: 3306    user: "root"    password: ""    database: "stu_sys"  parameters:    pool_size: 5    charset: "utf8"  fileds:    course_cols:      - cno      - cname      - ccredit      - cdept
2.4.2 python讀取yaml文件

使用外部庫 pyyaml 解析toml文件。

# -*- coding: utf-8 -*-""" * @Author       : wxy * @Date         : 2022-8-24 11:34:37 * @Description  : 讀取yaml文件 * @LastEditTime : 2022-8-24 11:34:37"""import yamlfrom pprint import pprintimport pymysqlyaml_file = "./db.yaml"with open(yaml_file, "r") as f:    cfg = yaml.safe_load(f)print(cfg)
2.5 Python xlrd 讀取 操作Excel

python Excel庫對比

本次主要關注python xlrd讀取 操作excel

2.5.1 xlrd模塊介紹

1.什么是xlrd模塊?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。

2.為什么使用xlrd模塊?在UI自動化或者接口自動化中數據維護是一個核心,所以此模塊非常實用。xlrd模塊可以用于讀取Excel的數據,速度非常快,推薦使用!官方文檔:https://xlrd.readthedocs.io/en/latest/

2.5.2 安裝xlrd模塊

到python官網下載http://pypi.python.org/pypi/xlrd 模塊安裝,前提是已經安裝了python 環境。或者在cmd窗口 pip install xlrd最新的xlrd不支持Excel xlsx文件的讀取。所以需要安裝舊版本 pip install xlrd==1.2.0

2.5.3 使用介紹

1.常用單元格的數據類型

empty(空的)string(text)numberdatebooleanerrorblank(空白表格)

2.導入模塊

import xlrd

3.打開Excel文件讀取數據

data = xlrd.open_workbook(filename)#文件名以及路徑,如果路徑或者文件名有中文給前面加一個 r

4.常用的函數excel中最重要的方法就是book和sheet的操作

獲取book(excel文件)中一個工作表
table = data.sheets()[0]             #通過索引順序獲取table = data.sheet_by_index(sheet_indx)  #通過索引順序獲取table = data.sheet_by_name(sheet_name)  #通過名稱獲取# 以上三個函數都會返回一個xlrd.sheet.Sheet()對象names = data.sheet_names()        #返回book中所有工作表的名字data.sheet_loaded(sheet_name or indx)    # 檢查某個sheet是否導入完畢
行的操作
nrows = table.nrows    # 獲取該sheet中的行數,注,這里table.nrows后面不帶().table.row(rowx)    # 返回由該行中所有的單元格對象組成的列表,這與tabel.raw()方法并沒有區別。table.row_slice(rowx)    # 返回由該行中所有的單元格對象組成的列表table.row_types(rowx, start_colx=0, end_colx=None)    # 返回由該行中所有單元格的數據類型組成的列表;        # 返回值為邏輯值列表,若類型為empy則為0,否則為1table.row_values(rowx, start_colx=0, end_colx=None)    # 返回由該行中所有單元格的數據組成的列表table.row_len(rowx)    # 返回該行的有效單元格長度,即這一行有多少個數據
列(colnum)的操作
ncols = table.ncols    # 獲取列表的有效列數table.col(colx, start_rowx=0, end_rowx=None)    # 返回由該列中所有的單元格對象組成的列表table.col_slice(colx, start_rowx=0, end_rowx=None)    # 返回由該列中所有的單元格對象組成的列表table.col_types(colx, start_rowx=0, end_rowx=None)    # 返回由該列中所有單元格的數據類型組成的列表table.col_values(colx, start_rowx=0, end_rowx=None)    # 返回由該列中所有單元格的數據組成的列表
單元格的操作
table.cell(rowx,colx)    # 返回單元格對象table.cell_type(rowx,colx)    # 返回對應位置單元格中的數據類型table.cell_value(rowx,colx)    # 返回對應位置單元格中的數據
2.5.4 實戰訓練

使用xlrd模塊進行讀取:

import xlrdxlsx = xlrd.open_workbook("./3_1 xlrd 讀取 操作練習.xlsx")# 通過sheet名查找:xlsx.sheet_by_name("sheet1")# 通過索引查找:xlsx.sheet_by_index(3)table = xlsx.sheet_by_index(0)# 獲取單個表格值 (2,1)表示獲取第3行第2列單元格的值value = table.cell_value(2, 1)print("第3行2列值為",value)# 獲取表格行數nrows = table.nrowsprint("表格一共有",nrows,"行")# 獲取第4列所有值(列表生成式)name_list = [str(table.cell_value(i, 3)) for i in range(1, nrows)]print("第4列所有的值:",name_list)
2.6 Python xlwt 寫入 操作Excel(僅限xls格式?。?p>xlwt可以用于寫入新的Excel表格或者在原表格基礎上進行修改,速度也很快,推薦使用!官方文檔:https://xlwt.readthedocs.io/en/latest/

2.6.1 pip安裝xlwt
pip install xlwt
2.6.2 使用xlwt創建新表格并寫入

編寫xlwt新表格寫入程序:

# 3.2.2 使用xlwt創建新表格并寫入def fun3_2_2():    # 創建新的workbook(其實就是創建新的excel)    workbook = xlwt.Workbook(encoding= "ascii")    # 創建新的sheet表    worksheet = workbook.add_sheet("My new Sheet")    # 往表格寫入內容    worksheet.write(0,0, "內容1")    worksheet.write(2,1, "內容2")    # 保存    workbook.save("新創建的表格.xls")
2.6.3 xlwt 設置字體格式

程序示例:

# 3.2.3 xlwt設置字體格式def fun3_2_3():    # 創建新的workbook(其實就是創建新的excel)    workbook = xlwt.Workbook(encoding= "ascii")    # 創建新的sheet表    worksheet = workbook.add_sheet("My new Sheet")    # 初始化樣式    style = xlwt.XFStyle()    # 創建字體樣式    font = xlwt.Font()    font.name = "Times New Roman"   #字體    font.bold = True                #加粗    font.underline = True           #下劃線    font.italic = True              #斜體    # 設置樣式    style.font = font    # 往表格寫入內容    worksheet.write(0,0, "內容1")    worksheet.write(2,1, "內容2",style)    # 保存    workbook.save("新創建的表格.xls")    # 設置列寬    worksheet.col(0).width = 256*20     # 設置行高    style = xlwt.easyxf("font:height 360;")  # 18pt,類型小初的字號    row = worksheet.row(0)    row.set_style(style)     # 合并 第1行到第2行 的 第0列到第3列    worksheet.write_merge(1, 2, 0, 3, "Merge Test")      # 設置邊框樣式    borders = xlwt.Borders()  # Create Borders    borders.left = xlwt.Borders.DASHED    borders.right = xlwt.Borders.DASHED    borders.top = xlwt.Borders.DASHED    borders.bottom = xlwt.Borders.DASHED    borders.left_colour = 0x40    borders.right_colour = 0x40    borders.top_colour = 0x40  borders.bottom_colour = 0x40
2.7 Python xlutils 修改 操作Excel

xlutils可用于拷貝原excel或者在原excel基礎上進行修改,并保存;官方文檔:https://xlutils.readthedocs.io/en/latest/

2.7.1 pip安裝xlutils
pip install xlutils
2.7.2 xlutils拷貝源文件(需配合xlrd使用)

程序示例:

# 3.3.2 拷貝源文件def fun3_3_2():    workbook = xlrd.open_workbook("3_3 xlutils 修改操作練習.xlsx")  # 打開工作簿    new_workbook = copy(workbook)  # 將xlrd對象拷貝轉化為xlwt對象    new_workbook.save("new_test.xls")  # 保存工作簿
2.7.3 xlutils 讀取 寫入 (也就是修改)Excel 表格信息

程序示例:

# 3.3.3 xlutils讀取 寫入 Excel 表格信息def fun3_3_3():    # file_path:文件路徑,包含文件的全名稱    # formatting_info=True:保留Excel的原格式(使用與xlsx文件)    workbook = xlrd.open_workbook("3_3 xlutils 修改操作練習.xlsx")    new_workbook = copy(workbook)  # 將xlrd對象拷貝轉化為xlwt對象    # 讀取表格信息    sheet = workbook.sheet_by_index(0)    col2 = sheet.col_values(1)  # 取出第二列    cel_value = sheet.cell_value(1, 1)    print(col2)    print(cel_value)    # 寫入表格信息    write_save = new_workbook.get_sheet(0)    write_save.write(0, 0, "xlutils寫入!")    new_workbook.save("new_test.xls")  # 保存工作簿
2.8 Python xlwings 讀取 寫入 修改 操作Excel2.8.1 pip安裝xlwings

pip install xlwings

2.8.2 基本操作

引入庫import xlwings as xw(1)打開已存在的Excel文檔

# 導入xlwings模塊import xlwings as xw# 打開Excel程序,默認設置:程序可見,只打開不新建工作薄,屏幕更新關閉app=xw.App(visible=True,add_book=False)app.display_alerts=Falseapp.screen_updating=False# 文件位置:filepath,打開test文檔,然后保存,關閉,結束程序filepath=r"g:\Python Scripts\test.xlsx"wb=app.books.open(filepath)wb.save()wb.close()app.quit()

(2)新建Excel文檔,命名為test.xlsx,并保存在D盤

import xlwings as xwapp=xw.App(visible=True,add_book=False)wb=app.books.add()wb.save(r"d:\test.xlsx")wb.close()app.quit()

(3) xlwings 讀寫 Excel新建test.xlsx,在sheet1的第一個單元格輸入 “人生” ,然后保存關閉,退出Excel程序。

def fun3_4_4():    # 新建Excle 默認設置:程序可見,只打開不新建工作薄,屏幕更新關閉    app = xw.App(visible=True, add_book=False)    app.display_alerts = False    app.screen_updating = False    # 打開已存在的Excel文件    wb=app.books.open("./3_4 xlwings 修改操作練習.xlsx")    # 獲取sheet對象    print(wb.sheets)    sheet = wb.sheets[0]    # sheet = wb.sheets["sheet1"]    # 讀取Excel信息    cellB1_value = sheet.range("B1").value    print("單元格B1內容為:",cellB1_value)    # 清除單元格內容和格式    sheet.range("A1").clear()    # 寫入單元格    sheet.range("A1").value = "xlwings寫入"    # 保存工作簿    wb.save("example_3.xlsx")    # 退出工作簿    wb.close()    # 退出Excel    app.quit()l
2.9 Python openpyxl 讀取 寫入 修改 操作Excel

在openpyxl中,主要用到三個概念:Workbooks,Sheets,Cells。Workbook就是一個excel工作表;Sheet是工作表中的一張表頁;Cell就是簡單的一個格。openpyxl就是圍繞著這三個概念進行的,不管讀寫都是“三板斧”:打開Workbook,定位Sheet,操作Cell。官方文檔:https://openpyxl.readthedocs.io/en/stable/1.安裝pip install openpyxl2.打開文件(1)新建

from  openpyxl import  Workbook # 實例化wb = Workbook()# 激活 worksheetws = wb.active

(2)打開已有

from openpyxl  import load_workbookwb = load_workbook("文件名稱.xlsx")

3.寫入數據

# 方式一:數據可以直接分配到單元格中(可以輸入公式)ws["A1"] = 42# 方式二:可以附加行,從第一列開始附加(從最下方空白處,最左開始)(可以輸入多行)ws.append([1, 2, 3])# 方式三:Python 類型會被自動轉換ws["A3"] = datetime.datetime.now().strftime("%Y-%m-%d")

4.創建表(sheet)

# 方式一:插入到最后(default)ws1 = wb.create_sheet("Mysheet") # 方式二:插入到最開始的位置ws2 = wb.create_sheet("Mysheet", 0)

5.選擇表(sheet)

# sheet 名稱可以作為 key 進行索引>>> ws3 = wb["New Title"]>>> ws4 = wb.get_sheet_by_name("New Title")>>> ws is ws3 is ws4True

6.查看表名(sheet)

# 顯示所有表名>>> print(wb.sheetnames)["Sheet2", "New Title",  "Sheet1"]# 遍歷所有表>>> for sheet in  wb:...     print(sheet.title)

7.保存數據

wb.save("文件名稱.xlsx")

8.其它(1)改變sheet標簽按鈕顏色

ws.sheet_properties.tabColor = "1072BA" # 色值為RGB16進制值

(2)獲取最大行,最大列

# 獲得最大列和最大行print(sheet.max_row)print(sheet.max_column)

(3)獲取每一行每一列sheet.rows為生成器, 里面是每一行的數據,每一行又由一個tuple包裹。sheet.columns類似,不過里面是每個tuple是每一列的單元格。

# 因為按行,所以返回A1, B1, C1這樣的順序for row in sheet.rows:    for cell in row:        print(cell.value)# A1, A2, A3這樣的順序for column in sheet.columns:    for cell in column:        print(cell.value)

(4)根據數字得到字母,根據字母得到數字

from openpyxl.utils import get_column_letter, column_index_from_string# 根據列的數字返回字母print(get_column_letter(2))  # B# 根據字母返回列的數字print(column_index_from_string("D"))  # 4

(5)刪除工作表

# 方式一wb.remove(sheet)# 方式二del wb[sheet]

項目實操—-UI自動化中實踐項目需求:業務寫入揀貨容器,使用一次不可使用第二次,且腳本中固定讀取固定位置

import openpyxlfrom openpyxl.cell.cell import ILLEGAL_CHARACTERS_REfrom openpyxl.utils import get_column_letter, column_index_from_string# 向sheetobj中的columnname列從start_row開始寫入listdatadef insert_listdata_to_column(sheetobj,listdata,column_name,start_row=3):    # 根據列名獲取列索引    colindex = column_index_from_string(column_name)    print("colindex為{}".format(colindex))    # 循環從開始行數到數據寫入后最后一行    for rowindex in range(start_row, start_row + len(listdata)):        # 寫入list數值根據索引取值,從0開始        val = listdata[rowindex - start_row]        print("val{}".format(val))        print("rowindex{}".format(rowindex))        try:            sheetobj.cell(row = rowindex,column = colindex,value = val)        except:            # 出現非法字符時,可以將字符串的非法字符替換掉            val = ILLEGAL_CHARACTERS_RE.sub(r"",val)            sheetobj.cell(row = rowindex,column = colindex,value = val)    delrow = start_row + len(listdata)    print("*********{}".format(delrow))    sheetobj.delete_rows(delrow)def del_excel():    xlsx = xlrd.open_workbook(r"D:\pytest\inbound_data.xlsx")    table =xlsx.sheet_by_index(2)    # 獲取第2列所有值    cel_value =table.col_values(1)    cel_value=cel_value[3::]    wb = openpyxl.load_workbook(r"D:\pytest\inbound_data.xlsx")    sheet = wb["B2B出庫"]    print(sheet)    insert_listdata_to_column(sheet,cel_value,"B",3)    wb.save(r"D:\pytest\inbound_data.xlsx")del_excel()
3 總結

在本文中,簡單介紹了幾種配置文件和使用。根據不同的用例,復雜的工具/框架并不總是比簡單的軟件包更好。但無論選擇哪一種,都應始終考慮可讀性,可維護性以及如何盡早地發現錯誤。事實上,可以說配置文件只是另一種類型的代碼。可以根據自己的項目框架來靈活運用啦~

作者:京東物流王小云

來源:京東云開發者社區

關鍵詞:
x 廣告
x 廣告

Copyright @  2015-2022 海外生活網版權所有  備案號: 滬ICP備2020036824號-21   聯系郵箱:562 66 29@qq.com

国产精品亚洲色图_91精品国产免费自在线观看_亚洲欧美在线观看91偷拍_亚洲免费资源

        日韩视频免费播放| 久久网站免费视频| 国产a级片免费观看| av在线com| 日韩精品第1页| 黄色一级片网址| 91蝌蚪视频在线| 亚洲高清av一区二区三区| 中文字幕资源在线观看| 欧美激情第3页| 欧美美女性视频| 亚洲色图偷拍视频| 国内av一区二区| 91精品视频国产| 搡的我好爽在线观看免费视频| 欧美美女一级片| 亚洲高清在线不卡| 国产精品12p| 人人妻人人澡人人爽欧美一区| 国产精品日韩三级| av免费观看国产| 日韩久久一级片| 欧美午夜aaaaaa免费视频| 日韩av自拍偷拍| 麻豆一区二区三区在线观看| 日本精品福利视频| 国产毛片视频网站| 成人黄色片视频| 91制片厂毛片| 中国一级黄色录像| 免费超爽大片黄| 日韩有码免费视频| 国产探花在线看| 91精品国产吴梦梦| 男女日批视频在线观看| 免费在线观看亚洲视频| 欧美精品一区二区三区免费播放| 色国产在线视频| 热这里只有精品| 僵尸世界大战2 在线播放| 人妻有码中文字幕| 欧美日韩中文不卡| 日韩在线视频在线| 日本新janpanese乱熟| 黄色一级片免费播放| 国产3p露脸普通话对白| 日日噜噜噜噜久久久精品毛片| 日韩av加勒比| 青青草精品视频在线| 欧美午夜aaaaaa免费视频| 久久久久久av无码免费网站下载| 日本网站免费在线观看| 加勒比av中文字幕| 国产精品又粗又长| 日韩av片专区| 给我免费播放片在线观看| 一级黄色香蕉视频| 成人高清dvd| 一级在线免费视频| 97干在线视频| 亚洲激情在线看| 国产视频九色蝌蚪| 日本福利视频导航| 又色又爽又高潮免费视频国产| 男女裸体影院高潮| 天天爽夜夜爽一区二区三区| aa视频在线播放| 黄瓜视频免费观看在线观看www | 国产成人在线综合| 激情深爱综合网| 国产一二三四五| 国产精品嫩草影院8vv8| 国产第一页视频| 国产精品无码人妻一区二区在线| 九九久久久久久| 四季av一区二区| 六月丁香婷婷激情| 国产精品成人久久电影| 交换做爰国语对白| 手机在线成人免费视频| 欧洲av无码放荡人妇网站| 青青草综合在线| 国产xxxxhd| 中文字幕永久有效| 999精品网站| 日本wwww视频| 黄色一级在线视频| www.日本少妇| 黄色片免费在线观看视频| 欧美日韩在线免费观看视频| 国产视频1区2区3区| 嫩草av久久伊人妇女超级a| 播放灌醉水嫩大学生国内精品| 久无码久无码av无码| 欧美日韩中文字幕在线播放| 偷拍盗摄高潮叫床对白清晰| 亚洲免费成人在线视频| 亚洲精品20p| 依人在线免费视频| 麻豆三级在线观看| 麻豆传传媒久久久爱| 国产成人久久婷婷精品流白浆| 毛片在线视频播放| 日本在线视频www色| 日日噜噜夜夜狠狠| 超碰在线人人爱| 国产 porn| 久久人人爽av| www.国产福利| 国产又粗又长又爽又黄的视频| 日韩va在线观看| 欧美爱爱视频网站| 青草全福视在线| 人人妻人人澡人人爽欧美一区双| 9色porny| 无码人妻精品一区二区三区在线| 国模无码视频一区二区三区| 国产成人无码a区在线观看视频| 北条麻妃在线视频观看| 18岁视频在线观看| 99sesese| 秋霞在线一区二区| av一区二区三区免费观看| 日韩精品手机在线观看| 精品久久久久久无码中文野结衣| 欧美成人高潮一二区在线看| 久久网站免费视频| 色哟哟精品视频| 激情成人在线观看| 日韩小视频网站| 国产a视频免费观看| 婷婷六月天在线| 日日夜夜精品视频免费观看| 高清无码一区二区在线观看吞精| 青青草精品视频在线| 日韩av黄色网址| 一区二区三区 欧美| 91 视频免费观看| www成人免费| 虎白女粉嫩尤物福利视频| 天天干天天操天天做| 中国老女人av| 久久久999免费视频| 色婷婷成人在线| 欧美另类videos| 免费在线观看的av网站| 日本黄色福利视频| a天堂资源在线观看| 亚洲一区二区蜜桃| 中文字幕在线乱| 男女午夜激情视频| 黄色a级三级三级三级| 久久视频这里有精品| 欧美wwwwwww| 日韩伦理在线免费观看| 成年人网站大全| 久久久久久久久久福利| 黄色一级大片免费| 伊人网在线免费| 日韩精品视频一区二区在线观看| 小泽玛利亚视频在线观看| 久久久99精品视频| 丰满少妇在线观看| 国产 欧美 日韩 一区| 免费大片在线观看| 在线观看17c| 欧美特级aaa| 老太脱裤让老头玩ⅹxxxx| 亚洲欧美日本一区二区三区| 男女视频网站在线观看| 99九九精品视频| 日韩 欧美 高清| 欧美一二三不卡| 中文av字幕在线观看| 国产91在线视频观看| 日日噜噜夜夜狠狠久久丁香五月| www.日日操| 欧美黑人在线观看| 国产精品自在自线| 日本在线视频www| 国产一二三在线视频| 亚洲一区二区三区四区精品| 无码少妇一区二区三区芒果| 欧美一级欧美一级| 永久av免费在线观看| 中文字幕第80页| 亚洲色成人一区二区三区小说| 成年人黄色在线观看| 免费黄色一级网站| 青青草视频在线免费播放| 国产人妻互换一区二区| 污色网站在线观看| 久久精品免费一区二区| 无码人妻精品一区二区蜜桃网站| 国产精品999.| 岛国av在线免费| 毛葺葺老太做受视频| 国内外成人激情视频| 少妇av一区二区三区无码| 大荫蒂性生交片|