久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

UI描述驅(qū)動(dòng)Web自動(dòng)化測(cè)試:自動(dòng)生成Selenium與Playwright腳本

UI描述驅(qū)動(dòng)Web自動(dòng)化測(cè)試:自動(dòng)生成Selenium與Playwright腳本 每次產(chǎn)品提一嘴需求UI 改幾個(gè)樣式測(cè)試同學(xué)就要陪著熬夜改腳本——干過 Web 自動(dòng)化測(cè)試的人應(yīng)該都懂這種痛。過去大半年我一直在折騰一套內(nèi)部代號(hào)叫 Mirage Flow 的工具核心思路一句話把頁(yè)面改寫成一段可讀的 UI 描述它自動(dòng)生成對(duì)應(yīng)的 Selenium 或 Playwright 自動(dòng)化測(cè)試腳本。聽起來像是“測(cè)試代碼不用手寫了”實(shí)操下來大部分常見頁(yè)面確實(shí)可以直接出能跑通的代碼。這篇我會(huì)把 Mirage Flow 從設(shè)計(jì)思路、描述格式、映射規(guī)則到雙框架生成代碼的實(shí)現(xiàn)細(xì)節(jié)完整拆開講也會(huì)把我在內(nèi)部分享時(shí)幫別人避開的坑一并列出來。適合正在搭自動(dòng)化測(cè)試體系、被腳本維護(hù)逼到頭大的測(cè)試開發(fā)也適合想了解 UI 描述驅(qū)動(dòng)測(cè)試代碼生成這個(gè)思路的前端和 QA 同學(xué)。1. 自動(dòng)化測(cè)試腳本維護(hù)的痛和 UI 描述這個(gè)解法1.1 腳本為什么越寫越脆弱剛接觸自動(dòng)化測(cè)試那會(huì)兒我也和大多數(shù)人一樣拿到一個(gè)頁(yè)面就按 F12 復(fù)制 XPath拼出一段“能跑就行”的腳本。等用例攢到幾百條問題就全冒出來了。最頭疼的是定位器太脆弱。開發(fā)把按鈕的 CSS 類名從btn-login改成btn-primary腳本直接紅燈某個(gè)輸入框的 placeholder 文案從“請(qǐng)輸入手機(jī)號(hào)”變成“請(qǐng)輸入手機(jī)號(hào)碼”整條用例就崩。類似的問題還有頁(yè)面加了異步加載腳本還在等固定 sleep接口超時(shí)報(bào)錯(cuò)測(cè)試用例跟著誤報(bào)開發(fā)重構(gòu)了 DOM 層級(jí)一層層寫死的 XPath 全部失效。我曾經(jīng)統(tǒng)計(jì)過一個(gè)小版本迭代里腳本維護(hù)時(shí)間能占到總工作量的 60% 以上真正寫新功能的時(shí)間反而沒多少。更深一層的問題是協(xié)作成本。業(yè)務(wù)同事、新來的同學(xué)想看懂自動(dòng)化腳本發(fā)現(xiàn)全是driver.find_element(By.XPATH, //div[3]/div[1]/div[2]/button)這種天書。他們提一句“登錄按鈕現(xiàn)在換個(gè)位置了”你都得在全量用例里搜一遍有多少地方寫死了這個(gè)按鈕的路徑。時(shí)間一長(zhǎng)自動(dòng)化測(cè)試變成了少數(shù)人的私產(chǎn)別人既不敢動(dòng)也不敢提。這就有點(diǎn)像裝修時(shí)把所有開關(guān)位置都記在腦子里地圖和圖紙都不畫——家里一旦調(diào)整家具布局你只能摸黑挨個(gè)試。UI 描述驅(qū)動(dòng)生成腳本的思路本質(zhì)上就是先畫一張“平面圖”讓每個(gè)控件有自己穩(wěn)定的身份再讓施工隊(duì)按圖去干活。頁(yè)面改了改圖比扒墻皮快得多。1.2 為什么要把“頁(yè)面描述”和“測(cè)試代碼”拆開Mirage Flow 最早想解決的問題其實(shí)很簡(jiǎn)單能不能讓測(cè)試代碼不直接依賴某一條具體的 XPath而是依賴“這里有一個(gè)密碼輸入框”這類語義信息因?yàn)楫a(chǎn)品、UI、測(cè)試在評(píng)審時(shí)討論的從來不是#id_023而是“登錄頁(yè)有個(gè)密碼框”。于是我們把人要管的層次和機(jī)器要管的層次分開。測(cè)試人員維護(hù)一份 UI 描述描述里寫清楚頁(yè)面有什么元素、元素叫什么、有哪些動(dòng)作和斷言生成器拿到描述之后再根據(jù)目標(biāo)框架的能力去選擇定位策略、生成等待代碼、拼裝腳本骨架。也就是說描述只回答“這個(gè)頁(yè)面長(zhǎng)什么樣、我要做什么”代碼負(fù)責(zé)回答“具體怎么定位、怎么等待、怎么斷言”。這個(gè)拆分帶來的好處在很多真實(shí)場(chǎng)景里都被驗(yàn)證過頁(yè)面改版時(shí)我們通常只要更新描述文件里的字段重新生成腳本不用把所有用例翻一遍新增一個(gè)同類頁(yè)面時(shí)復(fù)制一份描述改幾個(gè)字段整個(gè)用例就有了業(yè)務(wù)同學(xué)參與評(píng)審描述文件比讓他們看WebDriverWait代碼接地氣得多同一個(gè)描述可以同時(shí)生成 Selenium 和 Playwright 兩套代碼切換技術(shù)棧時(shí)不必推倒重來。當(dāng)然這套方案也不是萬能的。頁(yè)面結(jié)構(gòu)極其復(fù)雜、控件完全沒有穩(wěn)定屬性、交互邏輯非常特殊的時(shí)候純靠描述生成反而比手寫更繞。所以 Mirage Flow 的定位從來不是“取代手寫測(cè)試代碼”而是把那些重復(fù)的、模式化的 Web 操作從手寫變成生成讓人把精力留在真正需要判斷的地方。2. Mirage Flow 的核心設(shè)計(jì)思路與方案選型2.1 整體架構(gòu)到底分了哪幾層Mirage Flow 整體拆成四層這也是我后來給團(tuán)隊(duì)做分享時(shí)最常用的分層方式。第一層是 UI 描述層。我們選用 YAML 作為描述文件的載體原因后面細(xì)說。這層只關(guān)心“頁(yè)面有哪些元素、元素類型是什么、有哪些動(dòng)作和斷言”完全不涉及任何定位器和框架 API。第二層是解析與校驗(yàn)層。生成器會(huì)讀取描述文件先做 Schema 校驗(yàn)字段缺失、類型錯(cuò)誤、引用不存在的元素都在這一層提前暴露。校驗(yàn)通過后把 YAML 歸一化成內(nèi)部統(tǒng)一的 Python 字典結(jié)構(gòu)后續(xù)模板只要消費(fèi)這一份結(jié)構(gòu)即可。第三層是代碼生成層。這里用了 Jinja2 模板引擎加一組針對(duì)元素類型的映射策略。生成器根據(jù)目標(biāo)框架Selenium 或 Playwright選擇不同的模板集模板里只負(fù)責(zé)拼裝代碼結(jié)構(gòu)具體的定位器計(jì)算和等待策略由策略模塊提供。第四層是執(zhí)行與反饋層。生成出來的腳本可以直接交給 pytest 執(zhí)行失敗時(shí)會(huì)截圖、抓取頁(yè)面源碼、輸出日志并和 Allure 報(bào)告做集成。執(zhí)行反饋又反過來告訴我們哪些元素描述偏向不穩(wěn)定可以在下次生成時(shí)主動(dòng)提示。為什么要把這四層拆得這么干凈因?yàn)樵趯?shí)際迭代中四層的變化頻率完全不同。描述格式相對(duì)穩(wěn)定映射策略會(huì)隨項(xiàng)目演進(jìn)不斷補(bǔ)充模板要跟隨兩個(gè)框架的 API 版本更新執(zhí)行層則要根據(jù)團(tuán)隊(duì)基礎(chǔ)設(shè)施調(diào)整。如果把這四層揉在一個(gè)腳本里任何一層小改動(dòng)都會(huì)引發(fā)連鎖問題后來者根本不敢動(dòng)。2.2 為什么同時(shí)支持 Selenium 和 Playwright而不是二選一立項(xiàng)討論時(shí)團(tuán)隊(duì)內(nèi)部也吵過一輪Selenium 生態(tài)成熟、團(tuán)隊(duì)多少都會(huì)一點(diǎn)Playwright 自動(dòng)等待和調(diào)試體驗(yàn)好、是趨勢(shì)。最后結(jié)論是都要支持但理由不是站隊(duì)而是現(xiàn)實(shí)需求。我先用一張表把兩個(gè)框架在我們項(xiàng)目里的對(duì)比列出來維度SeleniumPlaywright生態(tài)成熟度高歷史資料和社區(qū)案例多相對(duì)較新團(tuán)隊(duì)學(xué)習(xí)成本稍高自動(dòng)等待需要手動(dòng)寫顯式等待或 Polling內(nèi)置 Actionability 檢查默認(rèn)行為友好多 Tab / 多窗口需要切換窗口句柄代碼略繁瑣提供多頁(yè)面上下文API 更直觀iframe / Shadow DOMiframe 要顯式 switchShadow DOM 要額外處理frame_locator 與 Shadow DOM 支持更順滑網(wǎng)絡(luò)攔截與 Mock需要額外工具原生支持 route 攔截遺留系統(tǒng)兼容對(duì)老瀏覽器和復(fù)雜環(huán)境適應(yīng)性更好對(duì)現(xiàn)代 Chromium/Firefox/WebKit 更友好存量腳本遷移成本低很多團(tuán)隊(duì)已有大量 Selenium 用例高我們真實(shí)的業(yè)務(wù)里存量項(xiàng)目一大半是 Selenium 腳本這些腳本背后還有一堆自定義工具函數(shù)、測(cè)試數(shù)據(jù)準(zhǔn)備邏輯、內(nèi)部框架封裝。如果要求全部遷移到 Playwright光遷移和驗(yàn)證成本就夠嗆。而新立項(xiàng)的項(xiàng)目我們希望直接用 Playwright享受自動(dòng)等待和多瀏覽器支持。所以 Mirage Flow 的設(shè)計(jì)原則是描述層保持中立生成層通過適配器輸出兩種代碼。對(duì)使用的人來說同一個(gè)描述文件既能生成舊項(xiàng)目的 Selenium 回歸腳本也能生成新項(xiàng)目的 Playwright 用例。你不需要想清楚“未來用什么框架”先把頁(yè)面描述沉淀下來框架遷移只是一個(gè)重新生成的動(dòng)作。2.3 從 UI 描述到定位器的映射策略描述層里寫的是語義信息生成代碼時(shí)必須翻譯成真正的定位器。這一塊是 Mirage Flow 最核心的難點(diǎn)也是最需要反復(fù)打磨的部分。我們給元素定位設(shè)計(jì)了一個(gè)優(yōu)先級(jí)策略id優(yōu)先其次是>page: 登錄頁(yè) url: /login elements: - name: 用戶名輸入框 type: input placeholder: 請(qǐng)輸入用戶名 - name: 密碼輸入框 type: input placeholder: 請(qǐng)輸入密碼 secure: true - name: 登錄按鈕 type: button text: 登錄 actions: - name: 輸入用戶名 element: 用戶名輸入框 action: fill data: ${username} - name: 輸入密碼 element: 密碼輸入框 action: fill data: ${password} - name: 點(diǎn)擊登錄 element: 登錄按鈕 action: click assertions: - name: 校驗(yàn)登錄成功 element: 歡迎信息 type: visible這個(gè)文件的優(yōu)點(diǎn)在于沒有一行代碼但任何懂業(yè)務(wù)的人都能看懂我們?cè)跍y(cè)什么。elements定義頁(yè)面元素actions定義操作序列assertions定義結(jié)果校驗(yàn)。描述文件里最需要注意的是命名一致性。你在elements里給元素起的name是全局唯一標(biāo)識(shí)后面的actions和assertions都通過name引用它。我見過不少同事把同一個(gè)輸入框在元素定義里叫“手機(jī)號(hào)輸入框”在動(dòng)作里寫成“輸入手機(jī)號(hào)”結(jié)果生成器匹配不上報(bào)錯(cuò)信息還提示得不夠直接。后來我們?cè)?Schema 校驗(yàn)里強(qiáng)行要求引用任何元素前必須先保證該元素確實(shí)存在于elements列表否則解析直接失敗。3.2 元素類型識(shí)別與定位器生成的核心實(shí)現(xiàn)比較傻的做法是在模板里寫滿if type button這種硬編碼但一旦控件類型變多模板會(huì)變成一個(gè)巨大的分支地獄。Mirage Flow 里我們抽了一個(gè)locator_strategy.py每種元素類型對(duì)應(yīng)一個(gè)策略類由策略類負(fù)責(zé)計(jì)算定位表達(dá)式。以生成 CSS 選擇器為例核心邏輯大約是這樣def build_css_locator(element: dict) - str: # 優(yōu)先級(jí)id >from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver webdriver.Chrome() driver.maximize_window() try: driver.get(http://localhost:8080/login) username_input WebDriverWait(driver, 10).until( EC.presence_of_element_located( (By.CSS_SELECTOR, [placeholder*請(qǐng)輸入用戶名]) ) ) username_input.send_keys(test01) password_input WebDriverWait(driver, 10).until( EC.presence_of_element_located( (By.CSS_SELECTOR, [placeholder*請(qǐng)輸入密碼]) ) ) password_input.send_keys(abc123) login_button WebDriverWait(driver, 10).until( EC.element_to_be_clickable( (By.XPATH, //button[contains(text(),登錄)]) ) ) login_button.click() WebDriverWait(driver, 10).until( EC.visibility_of_element_located( (By.XPATH, //*[text()歡迎回來]) ) ) finally: driver.quit()生成代碼時(shí)我特別要求把WebDriverWait的顯式等待寫進(jìn)去而不是讓框架替我們偷懶用time.sleep。原因很簡(jiǎn)單Selenium 沒有內(nèi)建 Actionability 檢查presence_of_element_located只代表元素出現(xiàn)了不代表能被點(diǎn)擊。如果生成器偷懶生成的腳本八成在真實(shí)環(huán)境里跑不穩(wěn)。所以對(duì)可點(diǎn)擊元素我們一律生成element_to_be_clickable對(duì)需要輸入的控件至少生成presence_of_element_located保證元素被渲染出來。生成器還處理了一些“看起來不起眼但很要命”的細(xì)節(jié)finally里必須driver.quit()防止并發(fā)跑用例時(shí)進(jìn)程不釋放關(guān)鍵操作后如果描述里開啟了截圖自動(dòng)插入截圖代碼最后把異常信息帶出方便 pytest 捕獲。3.4 生成 Playwright 代碼時(shí)差異點(diǎn)比想象中大剛開始我以為 Playwright 代碼就是把find_element換成locator而已實(shí)際上手才發(fā)現(xiàn)兩個(gè)框架的生成邏輯差異遠(yuǎn)比 API 名稱差異大。Playwright 最大的不同是自帶 Actionability 檢查click()方法會(huì)自動(dòng)等待元素可見、穩(wěn)定、可點(diǎn)擊。這帶來一個(gè)直接后果生成代碼里不需要堆WebDriverWait。但我們必須理解它的等待語義否則生成的代碼可能用錯(cuò)等待方式。一個(gè)典型的 Playwright 生成結(jié)果from playwright.sync_api import sync_playwright with sync_playwright() as p: browser p.chromium.launch() page browser.new_page() page.goto(http://localhost:8080/login) page.fill([placeholder*請(qǐng)輸入用戶名], test01) page.fill([placeholder*請(qǐng)輸入密碼], abc123) page.click(button:has-text(登錄)) page.wait_for_selector(text歡迎回來) browser.close()兩套代碼放在一起看差異就非常直觀Selenium 版本需要手動(dòng)等待、手動(dòng)選擇顯式條件生成器要替用戶做很多決策Playwright 版本自帶等待生成器只需要保證定位器合理代碼看起來簡(jiǎn)潔得多Playwright 的多 Tab 和 iframe 處理方式不同生成器生成的代碼結(jié)構(gòu)也不同。我們?cè)?jīng)給一個(gè)涉及內(nèi)部系統(tǒng) iframe 的頁(yè)面生成 Playwright 代碼生成器直接輸出frame_locator(iframe[titlemain]).locator(...)這比 Selenium 里switch_to.frame再定位的代碼可讀性好太多。雙框架生成讓我學(xué)到一個(gè)教訓(xùn)不要試圖在一套抽象里掩蓋框架的差異因?yàn)檫@樣生成的代碼必然是你妥協(xié)后的“最小公分母”。Mirage Flow 的做法是讓描述層完全相同但生成模板按框架能力各自發(fā)揮。Playwright 模板可以用它的自動(dòng)等待優(yōu)勢(shì)Selenium 模板就老老實(shí)實(shí)生成顯式等待兩者生成的代碼都符合各自社區(qū)的最佳實(shí)踐。3.5 數(shù)據(jù)驅(qū)動(dòng)和斷言怎么生成到腳本里自動(dòng)化測(cè)試不可能只有一組數(shù)據(jù)。登錄頁(yè)至少要測(cè)正確密碼和錯(cuò)誤密碼搜索結(jié)果頁(yè)要測(cè)不同關(guān)鍵詞。所以描述文件里的${username}、${password}這類變量必須能透?jìng)鹘o測(cè)試框架。我們最終選擇讓生成器輸出 pytest 參數(shù)化入口import pytest from yourgen_module.login_page import run_login pytest.mark.parametrize(username,password,expect_success, [ (test01, abc123, True), (test02, wrong, False), ]) def test_login(username, password, expect_success): run_login(usernameusername, passwordpassword, expect_successexpect_success)這樣設(shè)計(jì)的好處是數(shù)據(jù)和業(yè)務(wù)邏輯完全分離。測(cè)試數(shù)據(jù)可以放在 JSON/Excel 里再由一個(gè)很小的加載邏輯喂給參數(shù)化裝飾器業(yè)務(wù)腳本則由生成器維護(hù)描述文件更新后重新生成即可。斷言部分也是一樣。描述文件里寫了assertions生成器會(huì)翻譯成對(duì)應(yīng)框架的斷言代碼。我們支持了最常見的幾類元素可見、元素文本等于、元素?cái)?shù)量等于、元素屬性包含、當(dāng)前 URL 包含。每類斷言在不同框架里寫法不同所以這塊也是雙模板的重點(diǎn)。不要小看斷言描述的重要性它其實(shí)是把測(cè)試意圖沉淀下來比只記錄操作路徑更有價(jià)值。4. 常見問題與排查技巧實(shí)錄4.1 定位器生成出來卻還是不穩(wěn)定問題出在哪Mirage Flow 上線第一個(gè)月被問得最多的就是“為什么我根據(jù)描述生成了選擇器跑兩次還是掛了”。我排查了一圈發(fā)現(xiàn)絕大多數(shù)情況不是生成器的問題而是頁(yè)面里存在多個(gè)滿足條件的節(jié)點(diǎn)。舉例來說頁(yè)面里有三個(gè)按鈕文本都包含“提交”描述里寫type: button, text: 提交生成器用:has-text(提交)或contains(text(),提交)定位時(shí)匹配到多個(gè)節(jié)點(diǎn)。Selenium 會(huì)直接拋ElementNotInteractableException或StaleElementReferenceExceptionPlaywright 的strict mode會(huì)直接報(bào)錯(cuò)提示“l(fā)ocator resolved to 3 elements”。這個(gè)我后來在描述規(guī)范里加了一條規(guī)則如果元素文本模糊請(qǐng)務(wù)必補(bǔ)充位置信息比如index: 0或者寫一個(gè)更精確的父級(jí)描述。另一個(gè)常見坑是頁(yè)面里存在不可見元素。比如開發(fā)用隱藏的input做狀態(tài)存儲(chǔ)placeholder 恰好又和真實(shí)輸入框類似。這時(shí)候顯式等待能查到元素但send_keys卻報(bào)錯(cuò)。我們?cè)谏?Selenium 代碼時(shí)特意對(duì)fill動(dòng)作增加visibility_of_element_located而不是presence_of_element_located能減少一部分誤報(bào)。排查這類問題我推薦一個(gè)土辦法把生成的 locator 直接粘到瀏覽器 DevTools 的 Console 里執(zhí)行document.querySelectorAll(...)數(shù)數(shù)匹配了幾個(gè)節(jié)點(diǎn)。凡是能立刻看出匹配數(shù)量不對(duì)基本都能在生成階段發(fā)現(xiàn)問題不用反復(fù)跑用例試錯(cuò)。4.2 iframe 和 Shadow DOM描述層怎么表達(dá)現(xiàn)在的系統(tǒng)里嵌套 iframe、Shadow DOM 已經(jīng)很常見。早期描述文件里沒有這個(gè)概念生成的腳本遇到內(nèi)部系統(tǒng)頁(yè)面就必掛。后來我們?cè)谠孛枋隼镌黾恿藘蓚€(gè)可選字段- name: 內(nèi)部操作按鈕 type: button text: 確定 frame: iframe[titlemain] shadow: true生成器遇到frame字段時(shí)Selenium 側(cè)會(huì)生成切 frame 再定位的代碼Playwright 側(cè)則生成frame_locator(...).locator(...)。遇到shadow字段時(shí)處理方式又不一樣Playwright 默認(rèn)可以穿透 open shadow root而 Selenium 需要先取shadowRoot再往里查。這些差異統(tǒng)統(tǒng)被封裝在模板層對(duì)描述作者來說只是多寫兩個(gè)字段。這里有個(gè)值得強(qiáng)調(diào)的點(diǎn)如果不確定元素到底在不在 iframe 里可以先跑一次帶--debug的生成模式工具會(huì)輸出候選定位器在頁(yè)面上的命中情況。比起在腳本里加斷點(diǎn)這個(gè)階段排查成本低得多。4.3 等待策略固定 sleep 是最毒的用法我見過太多現(xiàn)有自動(dòng)化項(xiàng)目里全是time.sleep(5)。剛開始腳本能跑等頁(yè)面變慢或者接口變慢sleep 不夠就掛為了解決掛有人把 sleep 加到 10 秒、15 秒于是整個(gè)用例集跑到要 40 分鐘。這種代碼不能算自動(dòng)化測(cè)試只能叫定時(shí)器表演。Mirage Flow 生成的代碼里我們默認(rèn)不輸出任何固定 sleep。Selenium 側(cè)用WebDriverWait配合具體條件Playwright 側(cè)直接依賴自動(dòng)等待能力。唯一允許出現(xiàn)page.wait_for_timeout(500)的場(chǎng)景是那些頁(yè)面里有動(dòng)畫過渡、且動(dòng)畫結(jié)束后元素才可交互的罕見情況而且我們會(huì)在描述里顯式標(biāo)注delay: 500讓使用者意識(shí)到這里有一個(gè)不經(jīng)意的等待。如果用例跑下來還是不穩(wěn)定第一步永遠(yuǎn)不是加 sleep而是打開瀏覽器的 Network 面板看請(qǐng)求到底卡在哪。是后端 5 秒才返回還是前端 JS 渲染慢了定位到原因后或者調(diào)整接口 Mock或者改用更合理的等待條件。把“等待“這件事交給廣播式輪詢而不是固定假設(shè)頁(yè)面一定在 N 秒內(nèi)加載完穩(wěn)定性會(huì)完全不一樣。4.4 和 CI 集成時(shí)最容易踩的三個(gè)坑生成出來的腳本最終要跑在流水線里和本地跑完全是兩種體驗(yàn)。最先踩的坑是測(cè)試環(huán)境地址寫死在描述文件里。我們?cè)诿枋鑫募镉?{base_url}這種變量占位CI 里通過環(huán)境變量注入這樣同一套描述可以隨便切換 dev / staging / prod 環(huán)境。第二個(gè)坑是失敗證據(jù)收集。CI 里腳本掛了人不在現(xiàn)場(chǎng)連截圖都看不到。我們?cè)?pytest 的conftest.py里加了 fixture每個(gè)用例失敗時(shí)自動(dòng)截圖并附加到 Allure 報(bào)告同時(shí)抓取當(dāng)前頁(yè)面 URL 和頁(yè)面源碼。這一步對(duì)排查定位器失效特別有用因?yàn)楹芏鄷r(shí)候光看報(bào)錯(cuò)信息根本不知道頁(yè)面當(dāng)時(shí)長(zhǎng)什么樣。第三個(gè)坑是瀏覽器并發(fā)和資源占用。早期我們?cè)?CI 里同時(shí)起十個(gè) Chrome 進(jìn)程跑不同用例經(jīng)常把節(jié)點(diǎn)內(nèi)存打滿出現(xiàn)一堆莫名其妙的白屏和超時(shí)。后來做了兩件事一是控制并行度二是給每個(gè)任務(wù)固定臨時(shí)目錄避免多個(gè)瀏覽器搶同一份用戶數(shù)據(jù)目錄。看起來很基礎(chǔ)但確實(shí)救了我們很多次。5. 一些實(shí)際體會(huì)和擴(kuò)展方向Mirage Flow 做到現(xiàn)在最有價(jià)值的不是它生成了多少行代碼而是逼著我們把“頁(yè)面怎么測(cè)”這件事用結(jié)構(gòu)化方式沉淀下來。以前討論一條用例是否合理大家得先翻代碼現(xiàn)在直接看描述文件一條條核對(duì)元素和斷言效率高很多。我個(gè)人的經(jīng)驗(yàn)是先覆蓋高頻控件不要妄想一步到位。按鈕、輸入框、下拉、單選、文本斷言這幾類能覆蓋日常 80% 的頁(yè)面交互。表格、彈窗、拖拽、復(fù)雜動(dòng)畫這類特殊場(chǎng)景寧可讓它落地在描述里留手工擴(kuò)展口也不要讓模板無限變復(fù)雜。模板越花哨后期維護(hù)越痛苦。后續(xù)我打算做兩件事。一是把描述文件做得更“寬松”允許自然語言描述加參數(shù)配置混合使用比如“點(diǎn)擊搜索按鈕”結(jié)合type: button一起解析讓非測(cè)試同學(xué)也能寫描述。二是把定位器穩(wěn)定性統(tǒng)計(jì)接回來每次執(zhí)行后記錄哪些 locator 匹配多個(gè)節(jié)點(diǎn)、哪些頁(yè)面元素經(jīng)常變化讓生成器根據(jù)歷史執(zhí)行數(shù)據(jù)調(diào)整策略優(yōu)先級(jí)。這些都是基于現(xiàn)有描述層之上的增量不用推翻架構(gòu)這也是當(dāng)初分層設(shè)計(jì)最值得的一筆投資。如果讓我重新來一遍我會(huì)在立項(xiàng)時(shí)就把描述文件的 Schema 定得更嚴(yán)一些字段窮舉清楚而不是邊用邊加。現(xiàn)在雖然做了向后兼容處理但早期那些“摸著石頭過河”留下的模糊字段依然會(huì)在自動(dòng)生成時(shí)造成語義歧義。自動(dòng)化工具最怕的不是功能少而是規(guī)則不明確。把規(guī)則寫清楚把例外留給人判斷這套思路放到任何自動(dòng)化項(xiàng)目里都適用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色性欧美| 色五月婷婷在线| 免费草草草草草视频| 亚洲综合色婷婷| 亚洲欧美情色| 国产美女在线精品免费看| 91殴美大片| 色婷婷狠狠| 久久毛卡| 51久久夜色精品国产麻豆| 超碰97综合网| 97超碰免费人人性爱| 久久久国产三级黄色片| 操逼国产免费| 国产隔壁老王影院在线| 久久只有精品| 91 丝袜在线播放| 久久久无码精品人妻二区| 神马午夜久久久| 夜夜嗨AV一区天天| 丁香色婷婷| 久久性爱大全| 蜜臀Av一区二区三区| 精品9区| 91暧暧| 九九热九九热| 日本天天吊| 婷婷成人五月天| 噜噜噜狠狠色综合| 久久综合激情| 国产67194| 尤物网址| 久久久久久久人妻| 99这里有精品视频| 国产一区二区三区中文字幕| 国产九九久久久精品| 久99| av在线人气| 99啪啪视频| 第二页中文字幕| 欧美熟爽综合| 真实高潮91| 久久精品亚洲婷婷| 无码人妻丰满熟妇奶水区毛片| 久操视频免费在线观看| 青青青国产| 国产AV天美| 91性感网站| 中国小夫妻勾搭露脸淫荡对白| 久久免费看高潮毛片韩国| 一道本东京热加勒比一区二区三区| 精品视频123区小说区| 伊人青青一区成人视频在线观看区| 偷拍 亚洲| 激情自拍 校园春色| 久7色| 一区二区偷拍拍视频| 亚洲天堂资源在线| 久久久97| 99re公开精品免费视频| 激情综合网五月婷婷| 欧美视频中文字幕区| 色爱综合网| 国产999精品久久久久久| 九九热男人天堂| 色诱avtt| 久久久久久99999国产精品| 91欧美www| 色妇综合网| 国产精品白丝在线播放| 天天操夜夜操| 男生女生啊啊啊啊| 日本三级精品| 日逼视频日本| 熟妇人妻一区二区| 亚洲美女av无码| 操逼www.| 九九久久一区二区三区| 色色97爱| 乱伦日本色图AⅤ| 97WW精品| 午夜九九| 国产熟女乱论| 亚洲情色在线| 欧美色亚洲| 96久久精品一二三区色欲| 香蕉综合网| 久久神马影院| 男人天堂2030| 天天操天天插| 日本不卡二区| 999在线电影香蕉| 蜜臀av网址| 亚洲国产综合久久久性感熟妇| 91国产丝袜美女| 国产色图乱伦| 任你草| 亚洲综合九| 亚洲精品久久久久毛片A片拉屎| 日韩一区二区三区四区五区 | 激情终合网| 97欧美色| 中文一区在线视频| 78m啪啪啪| 午夜久久无码1000合集| 99超碰网| 3571色综合一区二区二区| 久久人体一区二区| 男人的天堂一区三区| 哈哈操电影AV| 精品免费视频国产一区| 麻豆 欧美 日韩| 色原狠狠天天天| 免费一级黄色录像影片| 天天舔九色婷婷| 97亚洲精品| 九九成人| 97 色综合| A久久| 男人天堂毛片| 内射日韩大臀美女| ji熟女.com| 9热9热综合网| 一级A片女人高潮叫床| 亚洲色欲天天天堂色欲网女| 人妻 欧美 中文| 九九综合久久中文字幕| 欧美亚洲美少妇一区二区| 2020中文在线一区二区三区| 国产乱子伦一区二区三区免看| 黄色电影在线播放综合网站| 丝袜亚洲91| 综合操逼| 久操精品| 国产精品夜夜夜| 国产67194| 97国产|免费| 北京专精特新企业招聘信息| 日韩操p| 狠操91,com| 日韩欧美俄罗斯A片| 97伦综合| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 五月丁香狠狠爱| 97超碰欧美精品| av中文字幕在线熟女| 国产成年女黄特黄| 九九九九九用不成了| 久久99草| 成人在线日韩| 久久亚洲中文字幕视频| 97亚洲色图| 亚洲美乱| 国产69精品久久久久99尤物| 蜜臀久久99精品久久久久久婷婷| 亚洲激情 欧美色图| 国产亚洲中文不卡二区| 偷拍 亚洲 欧美| 亚洲码和欧洲精品激情系列| 国产精品亚洲免费| 97超碰人人操人人操| 偷拍超碰| 九九色色| 欧美日本一区二区a人| 婷婷五月天色网| 国产久久久9999| 中文字幕亚韩| 国产亚洲色停停久久99精品91| 极品色电影院| 宅男91视频在线播放| h无码动漫在线观看| 国产白丝网站| 色偷综合| 国产青青美女玩逼视频| 欧洲亚洲人妻无码中字久久三区四区| 国模少妇一区二区三区| 日本精品中文字幕视频| 久操免费观看| 欧美日日人人天天| 亚洲欧美国产中文字幕| 久久的网站啊啊啊啊啊| 亚洲熟妇丝袜在线观看| 成人在线视频二区| 99热| 成人在线日韩| 色色婷婷丁香| 超碰人人干| 日韩欧美tv一区二区在线观看| 国产精品香蕉| 少妇贴图| 国产丸一视频| 久久久久久中文| 男生女生啊啊啊啊| 日本三级日本三级三级人妇四虎| 日日干夜夜干| 97香蕉碰碰人妻国产欧美| 中文字幕一区二区日韩网| 丝袜 中出 制服 人妻 美腿 中文字幕| 国产免费一区| 色色青青久久| 大香蕉日亚洲日本亚大| 国产外初女出血视频| 无码精品久久| 男女做爰猛烈动高潮A片免费应用| 好湿好紧视频| 九九九九九九九九九国产精品 | 99精品人妻| 国产区在线| 91蜜桃传媒精品久久久一区二区| 青青草好吊| 欧洲大香蕉| 91高潮喷水美女| 青青伊人这里只有精品| 九九九久久久W精品| 色99久草| 亚洲一区二区三区在线激情| 91午夜无码| 99这里只有精品国产| 久久男人精品| 一级A片女人高潮叫床| 亚洲 欧美日韩 另类| 久久99午夜精品一区人妻| 波多野结衣先锋影音| 亚洲va有码在线天堂| 婷婷激情五月天小说网| 人人操AV| 丝袜综合| 国产丝袜一区二区三区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 亚洲日本韩国极品一区二区| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 99自拍视频在线| 一本道综合色图| 深夜啪啪啪视频免费| 精品久久久av| 69丨亚洲丨精品丨入口免费播放| 久草这里只有精品 | 丁香五月天视频| 春色综合网| 日韩一二三区| 最新三级网址| 亚洲综合春色| a人欧美综合天堂麻豆| A级片日韩欧美国产欧美视频精选观看 | 六月丁香婷| 久久激情视频| 欧美暴力猛交| 国产丝袜啪啪| 久草国产在线视频| 伊人97超碰| 你草精品在线视频| 清纯唯美激情| 日本午夜操逼| 高潮嗯啊性感美女久久久| 亚洲熟女偷拍在线观看| 综合亚洲欧美| 亚洲人妻中文高清| 亚洲最大黄网| 91美女视频。| 国产成人亚洲精品无码古代早漏男 | 日本网色| 国产视频第2页| 激情在线青青操| 欧美探花网| 欧洲色| 91精品国久久久久久无码| 很狠操| 欧美人黑A片无码免视费| 特级毛片特黄久久免费看 | 翔田千里无码一区| 欧美毛片在线网| 99re在线视频| 变态乱伦伪娘灌肠一区二区| 亚洲 日韩 欧美 国产综合体| 色哟哟-国产专区| 91在线观看,天天综合| 中文字幕奈奈美被公侵犯| 精品国产乱码久久久久久影片| 久久九操在线观看| 亚洲精品影视老司机| 日本一区二区三区欧美日韩中文字幕| 美女9118禁| 国产精品熟女AV中文字幕在线播放| 国产第二页| 精品少妇999| 67194国产| 夜夜免费视频| 日韩欧美aⅴ综合网站发布| 一区久久久二区| 精品一区二区三区丰满熟女-亚洲欧美一区| 精品久久久久久中文| 欧美综合色站| 北约熟女超碰| 天美欧美国产| 国产成人欧美一区二区三区的国产| 日本少妇va7777| 麻豆国产精品午夜视频| www四虎| 97香蕉网| 九一综合精品视品av| yiqicaoav| 9久超碰| 久久免费少妇| 蜜桃精品视频一区| 视频国产精品未满十八禁止在线观看| 青青欧美| 99精彩视频| 成人久久久| 欧美天天拍| 国产白丝精品在线观看| 久久久不卡区一区二区三区久久久| 精品久久久av无码免费| 日韩精品操少妇| 熟女精品va中文字幕| 韩国嫰模上门援交视频| 午夜婷婷| 蜜臀无码视频在线观看| 免费97视频| 超碰在线91| 色综合加勒比| 亚洲欧美日韩中文久久自慰| 91九色首页| 色综91| 啪啪视频免费在线观看| 亚洲综合贴图91 | 久久久久久免费电影| 十八禁视频网站| 三上悠亚在线毛片91| 91+欧美| 亚洲第2页| 日本 情色 1区| 蜜色网色哟哟| 日本 欧美 国产一区| 综合网 欧美| 黑人中出21连凳花野真衣| 一牛影视成人片免费| 四虎884| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 日本岛国黄色网址| 无码动漫av中文字幕| 亚洲日本天堂| yazhousetuoumei| 精品超碰国产| 亚洲精品一二区| 久久老熟女| 91性高| 中文字幕精品一区二区精品| 亚洲国产精品有声| 久久国产成人精品国产成人亚洲 | av网页一区二区三区| 男人天堂新| 亚洲熟女乱色一区二区三区久久久 | 97人人中文网| 天天操天天射青青草| 日本成人电影资源网| 亚洲色图图片| 97操97干| 蜜桃网熟妇| 不卡中文字幕aⅴ在线| 日本二区不卡| 亚洲爱爱视频一区二区| 蜜臀av中字字幕网站| 成人AV在线电影| 99在线无码精品秘 入口黑人| 欧美精品久久96人妻无码| 91熟女视频网| 婷婷探花久久精品一区| 亚洲色香| 国产和美国毛片| 亚洲激情色片 | 强乱老妇中文字幕| 久久精品日韩专区免费观看| 久干网| 亚洲国产剧情少妇激情| 精品国产乱码久久久久久影片| 美国一区二区免费视频| 亚洲精品官网在线观看| 日本不卡高清视频| 久操网线| 国产AV高清AV无码| 女人被添高潮免费视频| 黄片在线免费在线观看| 强奸乱伦麻豆| 大色综合网| 18禁网站在线播放| 激情五月天丁香社区| 黑人无码一区二区| 天天日天天干天天整| 久操网址| 日本欧美国内在线| 色啪网| 丁香六月婷婷久久综合| 天天影视综合网欧美精品| 五月天婷婷成人网| 91在线视频免费中出| WWW4虎| 日韩中字av一区| 天天干2区3区| 亚洲揄拍网| 国产精品丝袜久久亚洲不卡| 九九亚洲色在线观看| 欧美激情亚洲情色| 91精品操美女| 青草精品视频日本久久久久网站在线| 色网色网色网色网色网色| 久久久新亚洲AV| 激情熟女12P| 日韩精品一区二区日韩| 国产九九九九九九| 97免费在线观看| 国产午夜精品理论片a大结局| 欧美真人抽搐一进一出gif | 日韩精品9区| 四虎免费视频| 九九亚洲| 免费看欧美美女黄色大片 | 亚洲性少妇| 九九人妻| 国产一级舔足在线观看| 大香蕉免费乱伦视频| 亚洲丝袜二区| 激情小说亚洲图片| 九九九九九九视频免费| 操比国产| 亚洲揄拍网| 超碰色97| 秋霞蝌科网日本一区| 粉嫩国产精品久久粉嫩| 精品妇操一区二区三区| 另类天堂| 成人黑料社久久| 久久一留热品黄| 后入福利| 亚洲va有码在线天堂| 人妻啊啊人妻啊啊| 性感美女91影视| 国产黄色影片在线观看| 人妻天堂综合网| 亚洲美女黄色| 性饥渴少妇av无码毛片| 色色五月天婷婷| 97精品在线| 蜜臀一区二区三区在线 | 国产91丝袜在线播放蜜月| 欧美色网| 亚码激情| 欧美精品黑人猛交高潮| 亚欧无码在线| 天美传媒av一区二区| 91亚洲欧美| 日本三级韩三级99久久| 国偷自 一区| 日本丝袜人妻内射| 污污污8888| 伊人热综合| 黄色AV影视| 黑人在线91| 爆操无码| 国产精品粉嫩福利在线| 口爆吞精在线观看| 欧美成人色| av毛片aaaaa免费看| 99色色| 国产免费小视频| 伊人女女资源在线观看| 色网1| av绯色| 亚洲一区二区 麻豆传媒| 私人尤物在线精品不卡| 超碰性爱97| 91国产操逼视频| 97精品一二区| 日韩精品一区二区高清| 久偷拍| 免费av在线播放二区| 97玖玖超碰| 亚洲av国产av综合av卡| 综合网久久| 无遮挡一级毛片视频免费的| 91天美传媒在线观看| 国产人妖的免费的视频| 国产1727欧美| 伊人婷婷五月天| 久久人妻熟女一区二区| 黄页大片在线观看| 超碰色男人操熟女| 99热国产| 爽爽淫人网| 人妻一区二区三区四区视频| 精品97精品97| 人妻在线视频| 国产97免费视频| 日韩国语字幕| 亚洲密乳AV| 精品一区二区久久| 口爆综合网| 午夜福利1区2区3区| 偷拍色图| 婷婷日韩一区二区三区中文字幕在线| 欧洲欧美视频一区二区| 密臀国产在线| 夜夜操av亚洲一区二区| 国产激情av女片自拍| 亚洲黄色电影| 欧美日韩一干二干| 五月婷婷丁香| 无码外流操逼视频| 中国熟妇| 久神马| 久久久婷| 中文字幕交换人妻| 综合夜夜| 怡红院网站在线视频| 久久a久久| 福利伊人玖玖国产| 97免费视频在线观看| 美女让帅哥通她小鸡鸡| 中文字幕视频在线观看一区二区| 老司机射| 精品国产一区二区三区在线播出| 国产欧美另类久久久精品课程| 欧美国产视频| 七久久久| 开心五月婷婷激情| 久久久久久久亚洲Av无码| 国产高清自拍| 婷婷国产精品一区二区| 欧美 综合 亚洲| 久久a久久| 蜜乳av首页| 密乳AV免费观看| 欧美不卡五十路| 欧美性暴力猛交| 人人爽夜夜玩视频| 97色诱| 日韩一区二区精品视频| 日本高清有码网址视频| 在线播放一级无码视频| A片大香蕉在线| 搡老女人老91二区| 这里只有97精品| 中文熟女五十乱码在线| 91美女看B| 97超碰久久色| 亚洲综合性网址| 国产精品 午夜福利| 国产精品麻豆成人AV艾秋| 精品黑人一区二区| 黄片在线免费在线观看| 嫩草影院在线观看精品 | 亚洲区限制级| 亚洲第一二区另类图| 免费看污网站| 人妻无码后入| 日韩综合成人免费视频| 人妻色偷色噜| 2020久久免费视频| 日韩免费中文字幕视频| 1769一区| 国产精品久久久无码aV去| 思思热在线视频免费| 色欲久久久久综合网| 国产在线播放成人免费| 日欧操屄| 日韩美女操b| 五十路三级片| 日本精品成人无码| 99精品在线观看| 日本大片日本一区二区免费高清 | 九九九免费视频| 国产精品久久久| 欧美中文字幕日韩在线| 精品丝袜无码一区二区三APP| 18啪啪手机免费性爱| 91九色蝌蚪在线观看| 黄色大香焦1级‘′‘| 乱伦3P视频| 久久怡红院| 日韩美女久久一区二区三区| 欧美72网页| 97精品网站| 精品黄色电影| 高清国产成人无码| 五月天丁香网| 精品无人区麻豆乱码久久久| 午夜精品久久久久久久99| 青娱乐 青青青操 日逼| 草草电影院| 成人aⅴ一区二区三区| 秋霞视频一区二区| 蜜桃臀 后入 一区 二区 三区 在线| aaa亚无码专区| 熟女五十路一区二区三| 国产亚洲色婷婷久久99精品91| 91熟女熟妇视频网站 | 日韩亚洲中文字幕在线| 91欧美| 日韩精品第3页| 国产区在线| 欧美十八禁视频| 国产伦精品一区二区三区在线观| 国产精品乱人伊人网| 久久精品99久久久久久| 三上悠亚在线毛片91| 国产大学生口爆吞精合集| www.99热| 亚洲中文字幕一区| 天天影视色香欲综合网小说| 婷婷亚洲五月***久久| 蜜臀亚洲中文| 97中文字幕九区| 亚洲最新a在线观看| 99re6久热只有精品6在线直播| 激情四射熟女丝袜| 一级性爱视频免费在线| 五月天激情小说| 久久婷婷欧美| 欧美A片中文字幕| 六九九九| 超碰色97| 色五月综合| 蜜乳av一区二区三区四区不卡| 国产午夜在线观看| 久久久人体| 后入精品| 啊视频在线| 久久综合av| 亚洲图片日本AⅤ欧美在线| 人妻激情另类| 粉嫩AV一区二区夜夜| 在线人人人人人人精品超| 日本 免费 一区二区三区 久久香蕉| 高清无码人妻久久久一区二区三区aⅴ| 18禁美女裸体无遮挡啪啪| 亚洲欧美中日韩| 成年人黄色| 丁香久久| 91五十路| 超碰超碰95| 久久免费少妇| 欧美黑人猛交春色影视大全| 精品69网| 欧洲综合视频| 懂色Av| 久久久久9久久久久| se..亚洲欧美| 97超碰国产精品| 91无遮挡| 久草资源在线视频官方总站日韩丝袜美腿| 午夜舔阴达高潮视频免费看| 熟妇熟女一区二三区| 精品国模无码| 伊人操操| 亚洲欧美日韩精品久| 久热99999| 国产成人自拍视频在线| 超碰导航97| 蜜臀少妇一区二区| 日本伦乱九九九综合| 成人老鸭窝人人在线视频| 国产强奸91| 淫荡少妇免费| 蜜臀99久久精品| www.狠狠操| 狠狠婷婷亚洲中文综合久久| 欧美在线啊啊啊| 日本无码1| 少妇高潮九九九九九九九| 九月色婷婷| 丰满人妻aA一区二区三区| 热久日综合| 黄片在线免费在线观看| 欧美亚洲激情| 欧亚日韩三区| 婷婷综合网| 国产精品视频内谢女人| 青青草乱入乱欲视频在线观看| 亚洲国产成人精品无码专区| 久久久91| 九九九九免费高| 婷婷久久综合久| 91精品无码久久久久久久| 欧美亚洲国产日本在线,久久精品国产| 黑人精品成人一区二区三区 | 人妻日日干| 天天做天天爱| 午夜福利在线合集| 五月丁香影院| 黄色在线网站| 日日超碰亚洲| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 色蜜AV| 亚洲欧美综合区自拍另类| 国产农村妇女毛片精品久久| 韩国女主播青草在线| 五月香婷婷| 色综合久久av| 亚洲色图图片| 淫穴高潮色图| 精品亚洲俞拍视频一区| 天天摸,夜夜摸| 日韩欧美一级特黄大片| TS人妖另类精品视频系列| 亚洲女人毛茸茸91| 欧美情色贴图| 九九热免费国产视频婷婷伊人| 亚洲国产麻豆一区二区三区| 四虎国产精品永久入口| 自拍啪啪视频| 乱伦av.com| 欧美在线|亚洲| 少妇二级| 欧美性生活综合| 福利视频一区二区微拍| 国产品精品自在在线午夜免费 | 久久久一区二区三区四区五区| 日本熟妇色熟妇在线视频播放| 97超级久久强资源| 99视频自拍| 青青操狠狠撩| 淫荡少妇免费| 国产亚洲性生活视频播放| 久久久久久久久999| 98超碰欧美| 久9久9久9久9久9久9| 欧日韩在线观看| 青春草A| av操操不卡| 国产超碰国产97| 天天影视色香色欲| 色优久久| 日韩精品99999| 亚洲综合在线视频| 99热最新网址| 色五月婷婷在线| 91久久99久久91熟女精品| 92午夜免费福利视频| 欧美日本国产日韩激情视频| 搡老女人老妇女AAA一VU麻豆| 黑人美精品 A片| 久久久一区二区三区三州| 成人午夜高潮av猛片| 97爱| 天天看天天干| 一级做a爰片久久毛片图片| 欧美性生活男人的天堂| 欧美一区二区日韩三区| 无码免费在线观看黄色片| AV在线性爱| 岛国色情视频在线观看| 日本一级婬片试看三分钟| 2019久久久久久久久福利| 中文字幕一区二区三区高清| 中文字幕123| 亚洲欧洲网站免费观看| 97精品综合| 啊啊啊用力在线观看| 肉丝网站91| 国产熟妇一区二区| 吊色| 超碰人妻久久| 日韩一级久久毛片| 国产成人精品无码久久| 在线无码操| 免费观看的av| 97香蕉人人乳| 日本五区不卡| 精品在线蜜臀| 操日韩第| 99精品视频在线观看| 男人天堂.AB| 在线观看无码三级少妇| 亚洲九月丁香| 99色悠悠| 99这里都是精品| 91人妻在线视频| 欧美日日操| 久热婷婷| 亚洲熟女乱熟乱熟妇综合网二区| 亚洲影视高清第一页| 91精品91久久久久77777俄罗斯老妇姓x| 国产91av在线播放| 午夜黄色免费在线观看| 九九热免费国产视频婷婷伊人五月 | 婷婷中文字幕| 日韩情色AV| 日韩一级二级三级| 九九综合久久中文字幕| 久久乐| 亚洲精品一区二区免费在线观看| 人妻熟女一区二区三区视频| 国产91av在线播放| 欧美后进式| 91色堂| 2024年最新色情网站在线观看| 久久精品店| 人人爽夜夜操| 欧美熟妇色| 国产网红精品| 欧中日成人免费影视| 91日韩网站| 欧美一级黄片视频在线| 91肏屄网| 99999国产| 青草青草久热| 天天澡天天爽日日av| 9久精品| 久久艹逼视频| 超碰午夜| 18禁免费视频| 精品人妻一区二区免费蜜桃| 亚洲视频精选| www.色婷婷色综合| 日韩精品大香蕉伊人在线| 欧美日韩在线视频网站| 精品久久視頻在线| 日韩欧美三级| 探花激情视频| 久肏视频字幕| 人妻中文字幕日韩电影| 使劲用力艹少妇视频一区二区| 日本孕妇一区二区视频操逼免费看 | 国产第12页| 日韩精品人妻中文字幕有码午| 鸥美中出| 激情综合网激情五月天| 99热在线只有精品| 久久肏大逼| 激情内射| 六十路日本| 黄色成年| 天天干天天爽| 久久精品一区二区| 日本熟妇一区二区三区| 极品肉射| 日本曲间由美性生活片| 国产久久久久久| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 玖玖爱免费观看视频| 熟女高潮合集-永久久久-成人AV| 91搞逼视频| 久久国产精品熟女人妻| 欧美极品性爱天天射| 黄久在线| 青娱乐日韩无码| 91成人精品| 中文字幕二区日韩天堂| 91老熟女视频| 亚洲狼狼干综合1| 无码国产Av| 男人的天堂三级| 99只有精品| 极品另类| 97在线无精品| 欧美黄片视频在线观看免费 | 欧美三级不卡| 亚洲欧美精品国产一区二区| 亚洲欧美日韩国产丝袜自拍中文| 亚洲精品中文字幕一区在线视频| 狠狠入| 澳门人妻久久| 久久黄色性爱视频| 欧美综合色| 少妇免费视频| 亚洲一区二区三区中文字幕| 中文字幕精品三级久久久| 欧美日韩91| 中英熟女操女| 美女91av| 你操综合| 福利在线观看一区二区| 久久国产精品m码| 伊人久久大香线综合无码| 亚洲欧美国产成人综合不卡| 色五月av| 91天美传媒在线观看| 久久久久久久人妻| 一级日本牲交大片好爽在线看| 国产精品69久久久久孕妇欧美| 亚洲丝袜色| 岛国大片在线观看网站入口| 超碰美女97| 97一区二区三区视频| 97人人超| 亚州免费啪啪视频| 欧美综合亚洲综合| 91丝袜美腿片| 性色avv| 91色久| 99国产在线 精品 视频| 色爱天堂| 国产丝袜高跟美女av免费观看| 少妇国产不卡| 91Chinese在线| 国产性久久久| 麻豆久久精品亚洲精品88| 欧美日韩精品青青| 亚洲少妇色图自慰直播| 亚洲不卡AV在线| 新婚人妻扶着粗大强行坐下| a片偷拍视频| 色图四区| 亚洲,欧美,综合网| 欧美精品三区| 91天美传媒精品| 97久久资源| www.五月天| 在线啊v一区| 国产久久av| 草莓精品视频在线免费观看| 97精品久久| 妇女一区二区三区| 人妻蜜桃臀| 日韩97精| 久久久专区| 97超碰巨乳| 日韩超碰精品综合| 操我啊啊啊啊啊| 亚洲色吧网| 婷婷五月成人| 人人扣人人操| 亚洲图片偷拍视频区| 亚洲中文日韩欧美大香蕉视频| 亚洲AV无码乱码| 熟女探花啪啪| 亚洲在线| 婷婷久久五月综合激情| 网友自拍第一页| 97免费视频在线| 久久东京热久久| 久草这里只有精品| 亚洲天堂男| 91色插| 蜜臀99久久精品久久久懂爱| 射综合网| 另类图片综合| 日本αv| 久久伊人亚洲AV无码网站| 三级日本一区二区三区| 国产精品一区二区久久精品| 天天躁日日躁AAAAXXXX国产| 自拍偷拍草一草| 国内偷自视频区视频综合| 亚洲国产精品成人综合| 日本人妻中文字幕精品| 日本操色导航| 草莓精品视频| 九九伊人网| 亚洲图片 91| 色五月69夫妻| 粉嫩小泬久久久一区二区| 激情黄色五月天| 少妇人妻在线| 久久春色| 亚洲啪AⅤ永久无码| 操操操日本的逼| 青娱乐日韩无码| 97中文超碰| 久久精品老司| 一区二区三区四区在线不卡| 色老大| 成人一二| 成人三一级一片aaa| 久久激情视频| 国产农村妇女精品一二区| 色 亚洲 91| 精品少妇一区二区| 婷婷丁香激情| www.久久最新地址| 久久丁香五月天| 欧亚第一综合网| 一级免费精品| 精品国产av一区二区三区四区入口| 四虎国产精品永久地址入口| 五月丁香综合啪啪| 色综合加勒比四四季| 国产风韵犹存熟妇三区| 99热| 国产成人www免费人成看片| 国产成人亚洲精品自产在线| 亚洲AV不卡在线观看尤物| 日日干日日摸| 国产精品久久久久久久AV大片 | 九九九九九九九九九九九蜜桃| 97在线视频免费看| 韩国一级婬片A片无码天美| 岛国片在线观看视频亚洲| 久久伊人在线五区| 日本在线15p| 国产精品无码成人精品| 久久久国产成人一区二区三区在线| 九九九久千久久激情蜜桃在线看 | 男人的亚洲天堂| 超碰97护士| 欧美性爱视频免费一区一A| 中文字幕视频在线观看一区二区| 死我十八禁| 性videos欧美熟妇hdx| 人人操av| 91网站18+| 无码动漫av中文字幕| 超碰免费在线| 激情情色五月天| 人人操我人人干| 91精品国产综合久久久蜜臀| 97少妇人妻中文字幕久久| 国产欧美日本亚洲精品| 婷婷丁香六月| 性欧美| 精品偷拍13p欧美dodk视频| 蜜臀精品1区2区| 亚洲一区二区AV| 免费精品福利在线观看| 97视频900| 亚洲 中文字幕 精品| 久久国产三区| 色色97爱| 九九香蕉网| 九草九九九| 十八禁成人网站在线观看| 国产精品熟女九九九| 日韩欧美亚欧在线视频| 国产少妇与亚洲av| 亚洲国产日韩精品久久久| av天堂5| 成人一级二级| 无码逼| 330dv亚洲成年视频网| 以及麻豆国产入口在线观看免费| 欧美日韩99精品麻豆传媒| 91女色| 性吧在线视频| 丝袜足交视频| 青青草视频这里只有精品| 99re这里只有| 天天日天天舔天天喷天天射| 欧美激情内射| 精品人妻伦一二三区久久| 国产97av| 色99在线| 啊啊啊爽爽| 精品久久在线区一区| 呦呦一区| 色诱avtt| 啪啪免费| 熟女91网| 精品玖九九久| 久久九九99| 欧美美女视频| 97在线国产精品| 日语五十路和六十路亚洲国产精品 | 和协影院中文字幕三区| 国产精品麻豆视频网站| 久久综合av| 国产激情综合| 91精品国产综合久久久蜜臀酒店| 天天综合日韩网| 久久精品 六十路 熟女 欧美| 区一二区日韩亚洲乱码av电影| 三级AV入口| 久久久性少妇| 五月婷婷激情综合| 亚洲国产一级黄色视频| 夜精品久无码| 丁香五月婷婷基地| 97色色色| 操死我了嗯嗯嗯| 免费a在线播放v| 91成人无码| 97超级欧美| 亚洲色图亚洲无码强奸乱伦| 少妇淫妇久久久久久久| 精品99999久久久久久| yellow网站免费观看日韩高清无码| 中文字幕一二三av| 精品免费1| 成人网站 免费观看| 亚洲图片第一页| 欧美亚洲高清不卡| 日本久久网| 中文日本免费高清| 欧洲精品二区| 亚洲AV不卡在线观看尤物| www超碰| 国产女同视频在线播放| 91色欧美| 91五月天| 精品久久久久,69国产成人精| 国产av又色又爽又黄| 欧美啪啪色吧在线| 超碰欧美在线欧美| 日本亚洲vr欧美不卡高清专区| 夜夜影视四色| 国产精品久久久久久亚洲色欲| 天天操熟妇| 嗯嗯,好大,好爽,好骚 | 色欧美在线| 99热 按摩 日韩| 欧美日韩m| 国产精品久久久久av| 欧洲亚洲国产综合在线| 久热最新在线杭州| 久操视频免费观看| 中文字幕在线观看第二页| 国产97色在线| 91社区拍啪人妻| 亚洲乱码精品一区二区| 一区二区三区麻豆| 亚洲精品黑丝| 亚洲中文电影| 欧美一区二区在线资源| 婷婷久久综合| 熟女被操视频网址| 操逼不卡中文字幕| 韩国手机不卡无码三级视频| 超碰97中文| 99夜夜操| 9精品久久久久| 超碰免费欧美7| 一区| 在线视频一区二区传媒| 欧美综合骚| 天天操夜夜操| 97人人干| 国产高潮AA片免费看| 丰满高潮18xxxx| 色色色欧美| 波多野42部无码喷潮在线观看| 香蕉国产精品麻豆亚洲欧美日韩| 久操免费在线| 亚洲97在线| 91人妻人人澡人人爽人人精品| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 欧美在线天堂| 欧美亚洲首页| 国产白丝AV| 台湾佬大香蕉| 99热销国产这里有精品| 91高清欧美| 東南亚性呦成人伦理资源在线视频| 青青草国产一区二区三区| 欲色啪| 91网站在线播放| 免费男人的天堂| 97视频一区| 殴美性天天| 色逼综合| 草草草视频在线免费看| 蜜乳中文字幕a在线| 三男一女不戴套的A片| 超碰精品日韩欧美国产| 欧美十八禁视频| 日韩操逼HD| 在线小视频| 亚洲欧美91√| 久久久一区二区三区麻豆| 国产99999| 翔田千里Av在线| 亚洲国产成人福利在线观看| 围产精品一区二区三区视频播放|