999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Selenium的Web軟件自動化測試

2018-09-21 10:03:20劉立康
計算機技術與發展 2018年9期
關鍵詞:頁面

姜 文,劉立康

(西安電子科技大學 通信工程學院,陜西 西安 710071)

0 引 言

隨著互聯網技術和云計算技術的發展,很多軟件產品都通過Web頁面進行操作。Web頁面具有操作簡單、操作場景繁瑣等特點;之前Web頁面測試大都使用手動的方法來進行測試,測試過程比較耗費人力,技術含量也較低。隨著軟件技術的發展,軟件測試也逐漸從純手動測試過渡到手動測試與自動化測試并存。

近年來,軟件自動化測試技術發展很快,出現了很多成熟的自動化測試工具,常見的Web自動化測試工具有:QTP、Silk Test、Selenium等。其中Selenium[1-5]是一款開源的、表現非常優秀的自動化測試工具。它最大的特點就是可以完全模擬用戶在瀏覽器上進行各種Web操作,擁有足夠好的用戶體驗,是站在用戶的角度對網站性能進行測試。Web自動化測試工具Selenium的逐漸風行,為原本通過手動方式進行Web頁面測試,提供了相對簡單、廉價的自動化方法。

1 Selenium與Python

文中使用Selenium和Python工具開展Web軟件自動化測試[6-10],以下簡單介紹這兩個工具。

1.1 Selenium

Selenium是一款開源的Web應用程序測試工具。Selenium測試腳本直接運行在瀏覽器中,模擬用戶操作網頁的過程。支持在IE、Chrome和FireFox等通用瀏覽器上使用,可以在Windows、Linux、Mac和Solaris 等多種操作系統上運行。

目前廣泛使用的是Selenium2.0以上版本,Selenium2=Selenium1+WebDriver。

WebDriver是一款自動化測試Web應用程序的工具,提供友好的API,使測試更易于理解和維護。它不依賴于任何特定的測試框架,是完全獨立的,應用它不需要啟動任何額外的進程或者運行其他程序。

Selenium 2[11-13](Selenium WebDriver)是將WebDriver API集成到Selenium 1,解決提供替代編程接口所帶來的局限性。Selenium 2工具的主要功能包括:對Web頁面進行功能測試,支持腳本錄制,支持Java、Python、Ruby和C#等語言的測試腳本。

1.2 Python

Python是一款面向對象的腳本語言,語法比較簡單但功能卻很強大。Python語言易讀、易維護,受廣大用戶所歡迎、用途十分廣泛。

Unittest也稱為PyUnit[14-16],是Python語言的單元測試框架。自Python2.1版本后,Unittest已經成為了Python的標準庫。Unittest類庫中包含許多方法可供編程時調用,提高了開發測試腳本的效率和質量。

2 Web軟件項目案例

在某視頻直播轉碼軟件項目中,與Web頁面相關的部分作為一個單獨的軟件模塊開發。該模塊作為項目的業務功能模塊之一,支持從Web頁面對視頻文件進行直播轉碼。

2.1 軟件開發技術

該軟件模塊采用MVC設計模式,使用當前最流行的Struts2+Spring3+Hibernate框架進行開發。前臺采用JSP進行頁面開發和用戶界面管理,使用JavaScript結合開源的前端插件jQuery EasyUI進行前端頁面開發。后臺采用Java與MySQL數據庫進行開發,采用當前主流的Java開源開發工具Eclipse和Tomcat服務器進行程序開發和發布。

2.2 jQuery EasyUI

jQuery是一套簡潔、靈活的JavaScript腳本庫,可以幫助Web頁面開發工程師簡化JavaScript代碼。jQuery由于簡便易用的特點,在Web前端開發中被廣泛使用。

EasyUI作為一款開源前端插件集合,功能十分強大。應用這些插件可以極大地減少Web開發方面的工作量。EasyUI與jQuery結合在一起應用,jQuery負責把EasyUI的各種插件搬運到Web項目合適的地方,并且讓它真正運轉起來。

2.3 軟件功能測試點

Web軟件功能測試點覆蓋Web頁面上各場景的正常與異常功能測試點。Web頁面的功能測試包括以下場景:Web頁面登錄與注銷;Web頁面登錄密碼修改;直播頻道增、刪、改、選中、多頻道翻頁;頻道顯示條數、頻道各參數配置;直播頻道啟用和禁用;瀏覽器兼容性測試,等等。

3 自動化測試軟件開發過程

自動化測試軟件開發過程主要包括:仔細研讀軟件需求說明書、分析測試需求、提交測試策略、設計測試用例、搭建測試環境。手動執行測試、選擇自動化測試用例、開展自動化測試工作。具體過程如圖1所示。

圖1 自動化測試軟件開發過程

3.1 制定測試計劃

明確自動化測試的對象、目的、內容、方法、進度要求,并確保測試所需的人力、軟硬件設備、數據等資源準備充分。

3.2 分析測試需求

根據需求說明書,測試架構師(TSE)編寫測試策略,設計測試功能點。Web功能測試需要覆蓋頁面鏈接、控件、頁面功能、數據處理、模塊業務邏輯等多種功能的測試。

3.3 設計測試用例

TSE針對正常和異常情況進行測試用例設計,測試用例覆蓋所有測試功能點,共涉及測試用例288個,并編寫測試用例文檔。

3.4 搭建測試環境

搭建測試所需的各種軟硬件環境,如數據、網絡、測試工具的安裝和設置等。

3.5 手動測試

手動測試可以發現Web軟件存在的各種問題,同時也可以檢查測試用例設計中存在的問題,為開展自動化測試奠定堅實的基礎。

3.6 選擇自動化測試用例

選擇可以自動化測試的測試用例,共選定測試用例238個,自動化率為82.64%。通常兼容性測試用例不能實現自動化測試。

3.7 編寫測試腳本開展自動化測試

采用Python與Selenium工具編寫自動化測試腳本,腳本基于Unittest自動化測試框架。完成用例的測試腳本編寫工作后,采取測試庫框架優化測試用例腳本,從眾多的腳本中提取出公共函數,供測試用例調用。通過腳本連跑實現對Web軟件的自動化測試。

4 基于Selenium+Python的自動化測試軟件開發

測試軟件開發選擇Python作為開發語言,使用Selenium提供的資源進行測試軟件開發。工作內容包括安裝各種測試工具、搭建測試環境;錄制、編寫測試腳本;基于測試庫框架優化軟件代碼;自動化腳本連跑;測試結果分析。

4.1 安裝測試工具

在執行測試任務的PC機(執行機)安裝所需的各種測試工具。

4.1.1 Python工具

安裝包為python-2.7.3.msi。安裝完成后,在環境變量中增加Python工具的相關目錄路徑。Python工具自帶了一個輕量級的集成開發工具IDLE,IDLE可以進行測試腳本的編輯、調試和執行。

4.1.2 Selenium工具

網上下載基于Python語言的軟件包selenium-2.50.1-py2-none-any.whl,執行pip install selenium-2.50.1-py2-none-any.whl進行軟件包安裝。安裝完成后Selenium軟件包安裝在Python工具的lib目錄下。

4.1.3 安裝Firefox瀏覽器和Selenium IDE工具

首先安裝Firefox瀏覽器,然后在該瀏覽器上安裝Selenium IDE工具。Selenium IDE是Firefox瀏覽器的插件,只能安裝在Firefox瀏覽器上。

4.1.4 安裝MySQL數據庫的相關工具

在Python程序中讀寫MySQL數據庫,需要安裝相關的工具。

(1)安裝MySQL-python工具,安裝包為MySQL-python-1.2.5.win32-py2.7.exe。

(2)安裝MySQL連接器,安裝包為mysql-gui-tools-5.0-r17-win32.msi。

安裝完成后,可以通過SQL語句對MySQL數據庫表單進行操作。

4.1.5 pycharm工具安裝

pycharm工具的安裝包為pycharm-community-5.0.3.exe。pycharm工具是Python重量級IDE,功能強大,自動檢測語法,可以幫助開發者寫出更規范的Python代碼。

4.2 搭建測試環境

Java Web軟件[17]基本組成如圖2所示。搭建測試環境需要安裝瀏覽器和Web應用軟件。文中的Web軟件選擇Chrome或者Firefox瀏覽器作為客戶端瀏覽器。

圖2 Java Web軟件基本組成

4.2.1 安裝瀏覽器

在測試執行機上安裝瀏覽器,目前安裝的Python與Selenium工具要求谷歌瀏覽器的版本不能低于43.0.2357.0。谷歌瀏覽器安裝包為48.0.2564.116_chrome_installer.exe。安裝完谷歌瀏覽器后,還需要安裝谷歌瀏覽器驅動程序chromedriver.exe,將其安裝在指定的目錄下。

4.2.2 Web軟件測試環境部署

Web軟件測試環境部署在操作系統為Windows 7的PC機上。

(1)安裝JDK、Tomcat與MySQL。

JDK安裝包為jdk-7u15-windows-is86.exe(1.7.0_15版本)。Tomcat安裝包為apache-tomcat-7.0.29-windows-x86.zip,直接解壓、安裝。MySQL數據庫安裝包為mysql-5.5.8-win32.msi。完成三個軟件安裝后,在環境變量中添加JDK、Tomcat、MySQL工具的相關目錄路徑。

(2)安裝Web產品軟件包。

Web產品軟件包為*.war格式的軟件包,將軟件包部署到Tomcat安裝路徑下的webapps文件夾中,部署完成之后,切換目錄到Tomcat安裝路徑下的bin文件夾下,執行startup.bat文件啟動Tomcat服務。網頁的IP地址為部署Web軟件PC機的IP地址。

4.3 錄制測試腳本

在Firefox瀏覽器上啟動Web軟件程序,找到菜單欄“工具”下的Selenium IDE,單擊后出現錄制頁面,點擊紅色錄制按鈕,開始錄制。根據測試用例進行手動測試操作,測試操作完成后,按下紅色按鈕停止錄制。從Selenium IDE工具導出錄制的Python腳本,該腳本文件名與測試用例編號相對應。

目前Web頁面的登錄、注銷以及修改密碼等簡單的場景采用Selenium IDE工具錄制之后,可以導出正確可用的測試腳本。其他包含復雜測試場景的Web自動化測試用例錄制后并不能生成真正可用的腳本。某些測試場景不支持通過Selenium IDE工具錄制腳本。

腳本錄制完成之后通常還需要修改、完善。錄制的測試用例腳本擁有Unittest測試框架,為腳本的進一步編寫工作提供了良好的基礎。

4.4 編寫自動化測試用例腳本

測試用例腳本采用Python進行程序設計。對于Python而言,代碼縮進是一種語法,Python沒有像其他語言一樣采用{}或者begin...end分隔代碼塊,而是采用代碼縮進和冒號來區分代碼之間的層次。縮進的空白數量是可變的,但是所有代碼塊語句必須包含相同的縮進空白數量,這個必須嚴格執行。Python腳本中出現未對齊的行,該行下方就會出現紅色曲線。可以使用空格鍵調整格式,直到紅色曲線消失。

當腳本中一行的字符數過多時,會報PEP 8的告警。應該將長字符串分隔成多行顯示。

4.4.1 自動化測試腳本框架

下面是一個簡單測試用例腳本示例:

#-*- coding:utf-8 -*-

from selenium importwebdriver

importunittest

......

class BaiduTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Chrome ()

self.base_url=u"http://www.baidu.com"

deftest_baidu_search(self):

driver=self.driver

driver.get(self.base_url)

self.assertEqual(driver.title, u"百度一下,你就知道")

driver.find_element_by_id("kw").clear()

……

def tearDown(self):

self.driver.quit()

if __name__=="__main__":

unittest.main()

從腳本示例中可以看出,通常測試腳本由5部分組成:

(1)導入需要調用的程序模塊。

(2)定義繼承unittest.TestCase的測試類,從而可以使用unittest.TestCase類中的各種方法。

(3)在初始化方法setUp中,初始化webdriver,設置測試環境。該方法自動執行。

(4)定義測試方法,首先定位Web元素,然后開展相關測試場景的操作。

(5)在清理方法tearDown中,執行測試用例運行后的清理工作,如退出webdriver、關閉驅動、恢復用例執行前的狀態等。該方法自動執行。

4.4.2 Web元素定位

Web元素定位就是在Web頁面上找到待測試的Web元素。手工測試時,測試人員容易在Web頁面上找到Web元素開展測試工作。自動化測試通過測試程序在Web頁面對應的HTML文件中定位Web元素,這是進行Web元素測試的第一步。Web元素定位有多種方法,文中的軟件項目測試過程中主要采用如下四種方法。

(1)基于元素ID的定位。

該方法通過查找Web頁面上的元素ID值來獲取元素,比較簡單,適合Web元素ID固定的情況來使用,對于動態分配Web元素ID的情況不能使用。

(2)基于元素XPATH的定位方法。

元素XPATH的定位類似查找一個人的地址,通過頁面html文件中的標簽名的層級關系定位元素的絕對路徑。這種定位元素方法在實際使用過程中,可以針對元素的XPATH進行修改,添加上、下層級的腳本標示,增加元素獲取的準確性。

(3)基于元素CSS的定位方法。

該定位方法查找Web元素的CSS屬性來獲取元素。CSS(cascading style sheets)層疊樣式表是用來表現HTML或XML的標記語言。CSS使用選擇器來為頁面元素綁定屬性。元素CSS定位方法,相對前兩種方法要復雜一些,元素的CSS屬性選擇比較靈活多樣。

(4)基于元素LINK的定位。

該定位方法僅適用于文本鏈接的場景,通過元素標簽對應的文本信息來定位元素,相對其他的元素定位方法,適用的場景比較有限。

4.4.3 測試方法

完成Web元素定位后,需要對相關的場景進行各種操作,開展測試工作。文獻[14]介紹了采用Python語言在各種常見場景中的操作方法。文獻[15]采用Java語言介紹了同樣的內容。網上也可以查到大量測試場景操作方法。編寫測試方法是腳本編寫的核心內容。

下面介紹測試腳本編寫過程中兩種場景的處理方法:

(1)Web頁面中包含iframe框架。

Web頁面中包含iframe框架時,如果要提取iframe框架中的元素,需要在腳本中使用swtich_to_iframe實現框架切換。在該iframe框架上的相關操作完成后,需要從該iframe框架切換回來,在腳本中使用swtich_to_default_content來實現。

(2)文本框或數字框輸入非法值場景。

Web頁面上很多元素是使用EasyUI制作的,其中包含大量的文本框和數字框場景。由于填入文本或數字都有一定的取值范圍限制,當文本框或數字框中填入非法值時,文本框或數字框的右側通常會彈出tooltip類型的提示框,提示填入的內容非法。填入非法值之后,tooltip提示框會在鼠標移動出對應文本框或數據框之后消失。測試腳本需要定位tooltip類型的提示框。

解決辦法:當文本框與數字框中輸入非法值時,可以通過基于元素CSS的方法來定位tooltip元素,檢測tooltip中所提示的文本內容。具體方法如下:

Tip=driver.find_element_by_css_selector(“div[class‘tooltip tooltip-right’]”).text

4.4.4 MySQL數據庫操作

測試腳本對Web軟件進行頻道添加、頻道修改以及各類頻道參數配置后,相關數據會寫入MySQL數據庫中對應的數據表中。在編寫測試腳本時,需要通過MySQL-python工具來實現對MySQL數據庫的操作,腳本實現時首先需要在腳本的最前面加上import MySQLdb,然后在測試腳本的測試方法中添加對MySQL數據庫的操作語句,實現對數據庫的讀寫操作。代碼內容如下所示:

conn=MySQLdb.connect(host=‘10.185.31.52’,port=‘3306’,

user=‘root’,password=‘huawei’,db=‘hwwebom’,charset=‘utf8’)

cur=conn.cursor()

cur.execute(“select name from hwwebom.t_channel where name=‘%s’ ” % channel_name)

for cha_name in cur.fetchall():

print cha_name

cur.close()

conn.commit()

conn.close()

4.4.5 執行用例腳本生成測試報告

測試用例腳本為*.py類型文件,在執行機上點擊該文件就可以自動運行。希望在測試用例腳本執行之后生成測試報告,需要使用Unittest的第三方測試報告模塊HTMLTestRunner(該模塊不在標準庫中,需要自行下載),加載該模塊后可以生成HTML格式的測試報告。將HTMLTestRunner.py文件保存Python的Lib目錄下,就可以在測試腳本中調用該模塊,具體實現過程如下所示:

if __name__==“__main__”:

now=time.strftime(“%Y-%m-%d-%H-%M-%S”)

filename=report_dir+‘/’+now+’_Web_Login_result.html’

fp=open(filename,‘wb’)

runner=HTMLTestRunner(

stream=fp,

title=unicode(‘測試報告’),

description=Unicode(‘測試執行情況:’)

)

runner.run(discover)

fp.close()

在生成測試報告文件時,將測試報告生成的時間作為測試報告文件名的一部分,并將測試報告文件生成的時間、測試用例運行結果寫入測試報告。

4.5 基于測試庫框架優化測試軟件

測試庫框架(test library framework)把應用程序分成過程和函數。該框架創建應用程序函數的庫文件,庫文件中的函數供應用程序調用。測試庫架構框架的優點在于能夠刪除明顯重復的部分,優化腳本代碼。

獨立編寫的測試用例腳本,整體結構凌亂。需要將很多的公共場景與Web頁面上的公共元素參數提取出來作為公共函數與共享參數;重新修改測試腳本,規范優化測試腳本;減少代碼冗余,提高腳本質量;同時也方便業務擴展之后的腳本修改和維護。

4.5.1 測試軟件目錄結構

測試軟件的目錄結構如圖3所示。測試腳本按功能分類存放在各自文件夾中。公共函數與公共配置文件存放在Public文件夾中。執行連跑任務的Python 腳本存放在根(Root)目錄中。測試報告存放在Tesst_report目錄中。

圖3 測試軟件目錄結構

4.5.2 公共函數的功能

Public文件夾中共包含了5個公共函數文件。其他文件夾中測試腳本可以調用Public文件中公共函數文件中的函數,在Public文件夾中需要添加__init__.py文件。5個公共函數文件實現的功能如表1所示。

表1 公共函數的功能

4.5.3 公共配置文件

Python標準庫的ConfigParser[18]模塊提供一套API來讀取和操作配置文件。ConfigParser是用來讀取配置文件的包,可以把一些常用的參數放在配置文件中,供多個腳本共同使用。

公共配置文件中主要寫入元素定位參數。在測試腳本編寫中,多個測試腳本需要對同一Web元素定位,將該元素的定位參數值寫入配置文件,方便編程時共同使用。

以場景登錄(Login)時輸入“用戶名”和“密碼”為例,敘述公共配置文件的使用方法。

(1)在腳本開頭添加:import ConfigParser。

(2)打開公共配置文件。

all_dir=os.path.split(os.getcwd())

ini_dir=all_dir[0]

css_selector_filename=os.path.join(ini_dir,‘css_selector.ini’)

(3)獲取配置文件中指定的配置信息。

[global]

Tip_Username_Null=/html/body/div[2]/div[3]/form/div[1]/div/small[1]

Tip_Password _Null=/html/body/div[2]/div[3]/form/div[2]/div/small

(4)將獲取的元素定位信息賦值給元素定位函數的參數變量,進行定位場景操作。

4.6 測試腳本連跑

測試腳本連跑是指全部測試腳本在程序控制下依次自動運行。

4.6.1 測試腳本連跑實現方法

腳本連跑使用discover方法,具體實現方式如下所示:

test_dir=‘./Web_Login’

report_dir=‘./Test_Report’

#discover方法定義

discover=unittest.defaultTestLoader.discover(test_dir,patter n=‘*.py’)

定義連跑路徑變量和測試結果報告存放路徑變量,然后調用discover方法執行連跑路徑下所有的測試腳本,連跑完成之后生成每個測試腳本的測試報告。

4.6.2 設定定時腳本連跑任務

采用相關工具設定定時連跑任務。

(1)BAT腳本啟動連跑任務。

編寫BAT腳本,調用根(Root)目錄下的Python連跑腳本,啟動連跑任務。腳本內容如下所示:

@echo off

set Script_path=D:Python_27_3Project_Live_New

set Report_path=D:Python_27_3Project_Live_NewTest_Report

taskkill /f /im FireFox.exe /t

cd /d % Script_path %

::調用Python腳本執行連跑

python Report_Test_Mod_Password.py-v

(2)Windows的任務計劃程序定時連跑。

若執行機的操作系統是Windows,在操作系統的附件中啟動任務計劃程序,設置Bat腳本定時運行任務。

4.6.3 持續集成工具定時連跑

在執行機上安裝持續集成工具Jenkin或者ICP-CI,編寫Ant腳本,創建持續集成工程,進行Web自動化腳本定時連跑。

5 測試結果分析

基于Selenium+Python的自動化測試軟件開發完成后,使用效果良好。

(1)提高測試效率。

手動執行288個Web測試用例耗時7人/天,且無法實現反復測試,整理測試報告也需要花費大量時間與人力。Web自動化測試腳本實現了82.64%的測試場景自動化,238個自動化測試用例連跑大約需要3個小時,同時可以實現測試報告自動輸出,可以利用非工作時間反復執行測試任務。

(2)預測試。

可用于軟件集成測試、系統測試、驗收測試的預測試。

6 結束語

結合Web軟件項目詳細敘述了基于Selenium+Python的自動化測試軟件開發過程, 介紹了開發過程中遇到的許多技術細節。工作實踐表明,該測試軟件在使用過程中效果良好,可以提高軟件開發與測試的效率,降低軟件的開發成本。同時彌補了手工測試時重復勞動的缺點,減少了測試人員大量的重復測試驗證工作;也有助于做好軟件項目的管理工作。

猜你喜歡
頁面
微信群聊總是找不到,打開這個開關就好了
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
在本機中輕松完成常見PDF操作
電腦愛好者(2022年3期)2022-05-30 10:48:04
移動頁面設計:為老人做設計
工業設計(2016年1期)2016-05-04 03:58:09
Web安全問答(3)
通信技術(2012年4期)2012-02-15 07:10:35
同一Word文檔 縱橫頁面并存
網站結構在SEO中的研究與應用
幾種頁面置換算法的基本原理及實現方法
淺析ASP.NET頁面導航技術
主站蜘蛛池模板: 国产91丝袜在线播放动漫 | 中文成人在线视频| 成人精品免费视频| 精品少妇三级亚洲| 9久久伊人精品综合| 亚洲国产精品一区二区第一页免 | 久久福利片| 99这里只有精品6| 色丁丁毛片在线观看| 91精品国产无线乱码在线| 99久久无色码中文字幕| 凹凸国产熟女精品视频| 国产精品成人观看视频国产| 青草精品视频| 亚洲男人天堂2018| 黄色一级视频欧美| 国产制服丝袜无码视频| 四虎AV麻豆| 曰韩人妻一区二区三区| 国产成人亚洲无吗淙合青草| 亚洲色欲色欲www网| 午夜老司机永久免费看片| 91美女在线| 欧美特级AAAAAA视频免费观看| 欧美日韩高清在线| 少妇人妻无码首页| 狠狠v日韩v欧美v| 国产女人爽到高潮的免费视频| 2021国产v亚洲v天堂无码| 欧美一区二区啪啪| 久久国产av麻豆| 国产激情在线视频| 日韩在线视频网站| 免费看美女毛片| 国产偷国产偷在线高清| 91黄色在线观看| 91色老久久精品偷偷蜜臀| 国产高清免费午夜在线视频| av尤物免费在线观看| 亚洲二区视频| 婷婷亚洲视频| 成年人免费国产视频| 国产亚洲精久久久久久久91| 内射人妻无码色AV天堂| 国产一区二区在线视频观看| 婷婷六月色| 欧美色视频在线| 97在线观看视频免费| 另类重口100页在线播放| 婷婷色在线视频| jizz在线观看| 国产极品美女在线播放 | 影音先锋丝袜制服| 91精品久久久久久无码人妻| 女人18一级毛片免费观看| 91久久夜色精品| 亚洲精品无码AⅤ片青青在线观看| 黄色网页在线播放| 一区二区三区国产精品视频| 在线精品视频成人网| 亚洲人成人伊人成综合网无码| 欧美成人手机在线观看网址| 九色综合视频网| 噜噜噜久久| 久操线在视频在线观看| 一级一级一片免费| 国产aⅴ无码专区亚洲av综合网| 国产综合另类小说色区色噜噜 | 麻豆国产原创视频在线播放| 污污网站在线观看| 成人在线亚洲| 在线观看国产小视频| 日本国产一区在线观看| 欧洲免费精品视频在线| 国产成人亚洲无码淙合青草| 无码国内精品人妻少妇蜜桃视频| 亚洲女人在线| 天堂成人在线视频| 在线a视频免费观看| 国产成人精品免费视频大全五级| 亚洲无码视频喷水| 91福利免费|