亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

輕量級(jí)RPA實(shí)戰(zhàn):基于Python圖像識(shí)別與鍵鼠模擬的簡(jiǎn)易自動(dòng)化工具指南

輕量級(jí)RPA實(shí)戰(zhàn):基于Python圖像識(shí)別與鍵鼠模擬的簡(jiǎn)易自動(dòng)化工具指南 簡(jiǎn)介RPAworker簡(jiǎn)易自動(dòng)化工具是一款面向零基礎(chǔ)辦公人員的RPA自動(dòng)化輔助軟件采用圖片定位與Excel指令編排相結(jié)合的方式讓用戶通過(guò)截圖和表格設(shè)置就能生成自動(dòng)化流程工具支持近40個(gè)操作指令可按照從上到下的順序逐條執(zhí)行覆蓋報(bào)表下載、表單填寫(xiě)、重復(fù)點(diǎn)擊等日常辦公場(chǎng)景有效減少機(jī)械化重復(fù)操作。其配置邏輯直觀把界面元素截圖作為定位依據(jù)在Excel表中按順序填寫(xiě)操作指令即可生成可重復(fù)運(yùn)行的流程后期修改只需調(diào)整表格內(nèi)容。使用者無(wú)需編程語(yǔ)言基礎(chǔ)只要掌握截圖與Excel基本操作即可自行配置若后續(xù)學(xué)習(xí)一點(diǎn)數(shù)據(jù)庫(kù)知識(shí)還可借助同一套邏輯搭建網(wǎng)頁(yè)爬蟲(chóng)采集數(shù)據(jù)把自動(dòng)化范圍擴(kuò)展到網(wǎng)絡(luò)端。資源包為zip壓縮格式大小約76.71MB支持Win7及以上版本服務(wù)器需Win2008及以上Win10下運(yùn)行最穩(wěn)定Win7若閃退可按系統(tǒng)位數(shù)安裝vc_redist運(yùn)行庫(kù)后正常使用。目前已有251人學(xué)習(xí)關(guān)注對(duì)于文員、個(gè)人開(kāi)發(fā)者等希望低成本入門(mén)RPA的用戶而言這份輕量工具可直接下載解壓進(jìn)行流程配置和測(cè)試。1. RPAworker簡(jiǎn)易自動(dòng)化工具為什么它比“大而全”的RPA平臺(tái)更適合個(gè)人和小團(tuán)隊(duì)每天早上一到工位先把三個(gè)業(yè)務(wù)系統(tǒng)的報(bào)表導(dǎo)出來(lái)照著規(guī)則填進(jìn)Excel再打開(kāi)網(wǎng)頁(yè)逐個(gè)錄入最后發(fā)郵件通知——這套動(dòng)作我做了快一年直到有一天我數(shù)了一下每天大概要花四十分鐘在這類(lèi)毫無(wú)技術(shù)含量的重復(fù)操作上。后來(lái)我搭了一個(gè)RPAworker簡(jiǎn)易自動(dòng)化工具把這套流程交給腳本去跑每天只留一道人工復(fù)核。RPA這個(gè)名字聽(tīng)起來(lái)很工業(yè)但“簡(jiǎn)易”兩個(gè)字才是關(guān)鍵它不追求像企業(yè)級(jí)RPA平臺(tái)那樣覆蓋所有系統(tǒng)、支持流程編排、帶控制臺(tái)管理只解決一件事——把你在電腦上反復(fù)做的機(jī)械操作用圖像識(shí)別加鍵鼠模擬的方式自動(dòng)跑起來(lái)。這套思路特別適合個(gè)人開(kāi)發(fā)者、小團(tuán)隊(duì)和兼職做數(shù)據(jù)處理的從業(yè)者你不需要部署服務(wù)器不需要被審批流程卡住甚至不需要太深的編程功底只要機(jī)器上能裝Python把幾行腳本寫(xiě)得能看懂就行。更重要的是它不依賴被自動(dòng)化系統(tǒng)的任何接口不侵入對(duì)方軟件的改造范圍窗口在旁邊開(kāi)著它就能干活活干完你只需要盯一眼結(jié)果。這篇文章會(huì)把從技術(shù)選型到實(shí)際落地的完整路徑講清楚包括參數(shù)怎么調(diào)、哪些地方容易翻車(chē)、怎么把腳本做得不容易壞。2. 選型先立住簡(jiǎn)易R(shí)PA工具的定位、技術(shù)路線與運(yùn)行環(huán)境2.1 三種自動(dòng)化路線的取舍為什么簡(jiǎn)易工具選“圖像識(shí)別鍵鼠模擬”市面上常見(jiàn)的RPA實(shí)現(xiàn)路線大致有三類(lèi)。第一類(lèi)基于UI控件樹(shù)通過(guò)系統(tǒng)輔助功能接口讀取窗口上的按鈕、輸入框、表格節(jié)點(diǎn)然后直接調(diào)用控件的屬性去賦值或觸發(fā)點(diǎn)擊。這路線的優(yōu)點(diǎn)是定位精準(zhǔn)、速度快但前提是被自動(dòng)化程序必須暴露控件樹(shù)很多自繪界面、網(wǎng)頁(yè)里的Canvas區(qū)域、遠(yuǎn)程桌面里的窗口都拿不到穩(wěn)定的控件信息。第二類(lèi)基于坐標(biāo)腳本也就是提前記住按鈕在屏幕上的像素位置到點(diǎn)就點(diǎn)擊。這玩意兒最脆弱窗口一挪、分辨率一換、屏幕上多彈出個(gè)通知整套腳本就全偏了。坐標(biāo)腳本一般只適合固定工位的演示場(chǎng)景真正用來(lái)跑日常任務(wù)很容易讓人血壓升高。第三類(lèi)就是RPAworker這類(lèi)簡(jiǎn)易工具采用的路線用截圖模板匹配來(lái)做視覺(jué)定位用鍵鼠模擬來(lái)執(zhí)行動(dòng)作。先截取目標(biāo)按鈕或輸入框的小圖作為模板運(yùn)行時(shí)在屏幕上找到匹配位置再去點(diǎn)擊或輸入。整套方案不需要接觸被控程序內(nèi)部也不依賴絕對(duì)坐標(biāo)窗口只要在屏幕上可見(jiàn)且外觀沒(méi)大變基本就能找得到、點(diǎn)得準(zhǔn)。三者的關(guān)鍵差異我用一張表來(lái)梳理路線定位方式環(huán)境要求穩(wěn)定性適用場(chǎng)景控件樹(shù)讀取UI控件接口被控程序暴露控件結(jié)構(gòu)高但挑程序標(biāo)準(zhǔn)Windows桌面應(yīng)用坐標(biāo)腳本固定屏幕坐標(biāo)窗口位置分辨率完全固定低演示、一次性任務(wù)圖像識(shí)別鍵鼠模擬截圖模板匹配目標(biāo)窗口可見(jiàn)中上靠閾值與容錯(cuò)補(bǔ)救網(wǎng)頁(yè)、遺留系統(tǒng)、跨平臺(tái)界面我一般會(huì)優(yōu)先推薦第三類(lèi)做個(gè)人自動(dòng)化理由很直接它不挑系統(tǒng)不要求對(duì)方開(kāi)放接口連老舊的內(nèi)部系統(tǒng)都能照跑不誤。代價(jià)是稍微吃一點(diǎn)CPU以及需要處理匹配失敗和誤匹配的容錯(cuò)邏輯后面第4章和第5章會(huì)展開(kāi)講。2.2 簡(jiǎn)易R(shí)PAworker技術(shù)棧的選型理由雖然標(biāo)題叫RPAworker簡(jiǎn)易自動(dòng)化工具代碼實(shí)現(xiàn)上并不需要單獨(dú)寫(xiě)一個(gè)商業(yè)級(jí)框架?;谒芘?、好維護(hù)、夠輕量的原則技術(shù)棧一般可以收斂為三個(gè)部分Python做膠水語(yǔ)言開(kāi)源的計(jì)算機(jī)視覺(jué)庫(kù)做模板匹配再加一個(gè)跨平臺(tái)的鍵鼠控制庫(kù)做動(dòng)作執(zhí)行。常見(jiàn)組合中動(dòng)作控制用pyautogui它負(fù)責(zé)模擬鼠標(biāo)移動(dòng)、點(diǎn)擊、拖拽、鍵盤(pán)輸入接口簡(jiǎn)單到幾分鐘就能上手自帶屏幕截圖功能還能順便用來(lái)做調(diào)試。圖像匹配用OpenCV的模板匹配方法把預(yù)先截好的按鈕小圖作為模板在實(shí)時(shí)截圖中滑動(dòng)計(jì)算相似度返回最可能的中心坐標(biāo)。中間再加一個(gè)watchdog庫(kù)用于監(jiān)聽(tīng)文件夾變化當(dāng)有文件落地時(shí)自動(dòng)觸發(fā)流程這樣就不需要人工去點(diǎn)“開(kāi)始”按鈕。為什么不在這個(gè)組合里引入Selenium或Playwright直接操作瀏覽器因?yàn)镽PAworker定位的是“所見(jiàn)即所得”的桌面級(jí)自動(dòng)化網(wǎng)頁(yè)只是其中一類(lèi)目標(biāo)。很多內(nèi)部系統(tǒng)登錄后是混合界面一部分頁(yè)面元素在DOM里一部分是嵌入的桌面控件或Flash遺留物單一瀏覽器方案根本覆蓋不全。而圖像識(shí)別方案一視同仁——無(wú)論那部分是HTML、Canvas還是畫(huà)出來(lái)的按鈕只要人眼能看見(jiàn)機(jī)器就能按模板去找。2.3 把環(huán)境搭起來(lái)最小依賴安裝與基線驗(yàn)證環(huán)境準(zhǔn)備按以下命令執(zhí)行建議先創(chuàng)建獨(dú)立虛擬環(huán)境避免和別的項(xiàng)目打架。python -m venv rpa_env source rpa_env/bin/activate # Windows下用 rpa_env\Scripts\activate pip install pyautogui opencv-python pillow watchdog這幾步做完依賴就齊了。pyautogui負(fù)責(zé)輸入模擬opencv-python提供cv2.matchTemplate接口pillow是pyautogui截圖時(shí)繞不開(kāi)的圖像處理底層庫(kù)它依賴PIL的接口watchdog用來(lái)做文件系統(tǒng)監(jiān)聽(tīng)。安裝完成后先跑一段十秒的驗(yàn)證腳本確認(rèn)pyautogui能正??刂剖髽?biāo)鍵盤(pán)import pyautogui import time screen_width, screen_height pyautogui.size() print(f當(dāng)前屏幕分辨率: {screen_width} x {screen_height}) pyautogui.moveTo(screen_width // 2, screen_height // 2, duration0.5) time.sleep(1) pyautogui.click()這段腳本把鼠標(biāo)移到屏幕中心并單擊。如果運(yùn)行正常光標(biāo)會(huì)平滑移動(dòng)過(guò)去。邏輯上把這一小段作為基線驗(yàn)證是因?yàn)楹芏喹h(huán)境里pyautogui的鼠標(biāo)控制受權(quán)限限制例如某些遠(yuǎn)程會(huì)話或屏幕設(shè)置影響先在最小范圍確認(rèn)它可用可以避免后面寫(xiě)了整套流程才發(fā)現(xiàn)底層動(dòng)作發(fā)不出去。參數(shù)上moveTo的duration控制移動(dòng)時(shí)長(zhǎng)0.5秒代表半秒內(nèi)完成移動(dòng)數(shù)值越小動(dòng)作越突兀越大越接近人手移動(dòng)click不帶參數(shù)表示在當(dāng)前光標(biāo)位置按下左鍵。3. 核心實(shí)現(xiàn)從定位、動(dòng)作到流程編排跑通一條真實(shí)任務(wù)3.1 用模板匹配做可靠的目標(biāo)定位基礎(chǔ)代碼與匹配參數(shù)RPAworker里所有“找東西”的操作都建立在模板匹配上。核心思路是先截取目標(biāo)區(qū)域的圖片保存為模板文件程序運(yùn)行時(shí)把屏幕整圖讀進(jìn)來(lái)用cv2.matchTemplate在整圖上滑動(dòng)搜索最相似的位置。這是OpenCV內(nèi)置功能不需要訓(xùn)練任何模型模板圖片大概幾百字節(jié)到幾KB就能發(fā)揮作用。下面這段代碼展示一次完整的定位邏輯把“找圖標(biāo)并返回坐標(biāo)”封裝成一個(gè)可復(fù)用函數(shù)import cv2 import numpy as np import pyautogui def find_template(template_path, confidence0.8): # 截取當(dāng)前屏幕 screen pyautogui.screenshot() # 轉(zhuǎn)為OpenCV使用的BGR格式 screen_cv cv2.cvtColor(np.array(screen), cv2.COLOR_RGB2BGR) # 讀取模板圖片 template cv2.imread(template_path) # 執(zhí)行模板匹配 result cv2.matchTemplate(screen_cv, template, cv2.TM_CCOEFF_NORMED) # 找到最相似位置及其相似度 min_val, max_val, min_loc, max_loc cv2.minMaxLoc(result) if max_val confidence: h, w template.shape[:2] # 返回模板中心坐標(biāo) center_x max_loc[0] w // 2 center_y max_loc[1] h // 2 return center_x, center_y, max_val return NonematchTemplate的TM_CCOEFF_NORMED是歸一化相關(guān)系數(shù)匹配結(jié)果值域在-1到1之間越接近1代表越相似。confidence參數(shù)設(shè)置為0.8意思是相似度不低于80%才認(rèn)為找到目標(biāo)。這個(gè)值不是固定不變的后面講參數(shù)時(shí)會(huì)細(xì)說(shuō)。取中心坐標(biāo)是為了讓后續(xù)點(diǎn)擊動(dòng)作落在模板區(qū)域正中央避免點(diǎn)到模板邊緣導(dǎo)致誤觸。如果函數(shù)返回None說(shuō)明屏幕上沒(méi)找到目標(biāo)調(diào)用方就應(yīng)該進(jìn)入等待或重試邏輯而不是直接點(diǎn)擊。需要注意的一點(diǎn)是模板圖片要截取目標(biāo)物體的“穩(wěn)定外觀”。例如一個(gè)按鈕圖標(biāo)盡量只截按鈕主體不要帶上背景的漸變紋理或旁邊的文字否則背景一變匹配率就暴跌。截圖分辨率要和運(yùn)行環(huán)境一致建議模板和屏幕都在同一個(gè)縮放比例下截取后面遇到縮放的坑會(huì)再提。3.2 動(dòng)作模擬的細(xì)節(jié)點(diǎn)擊、輸入、快捷鍵與等待策略定位到目標(biāo)之后動(dòng)作層要處理的主要是四類(lèi)操作移動(dòng)并點(diǎn)擊、鍵盤(pán)輸入、快捷鍵組合、流程之間的等待。RPAworker在動(dòng)作層會(huì)封裝幾個(gè)常用函數(shù)讓主流程代碼看起來(lái)像在描述自然語(yǔ)言步驟。import pyautogui import time import random def smart_click(x, y): # 略微加入隨機(jī)偏移避免每次點(diǎn)擊都在同一個(gè)像素點(diǎn) offset_x random.randint(-3, 3) offset_y random.randint(-3, 3) pyautogui.moveTo(x offset_x, y offset_y, duration0.2) pyautogui.click() def type_text(text, interval0.05): # 逐字符輸入模擬人工打字節(jié)奏 for char in text: pyautogui.write(char, intervalinterval) def press_hotkey(*keys): # 組合快捷鍵例如 press_hotkey(ctrl, s) pyautogui.hotkey(*keys) def wait_for(target_func, timeout15): # 輪詢等待目標(biāo)出現(xiàn)超時(shí)拋異常 start time.time() while time.time() - start timeout: result target_func() if result is not None: return result time.sleep(1) raise TimeoutError(f{target_func.__name__} 在 {timeout} 秒內(nèi)未出現(xiàn))smart_click中加入隨機(jī)偏移是血淚經(jīng)驗(yàn)?zāi)承┫到y(tǒng)會(huì)記錄操作軌跡如果每次點(diǎn)擊都在完全相同的像素點(diǎn)很容易觸發(fā)風(fēng)控或操作審計(jì)告警。type_text逐字符帶間隔寫(xiě)入是因?yàn)閜yautogui.write默認(rèn)一次性輸出整串文本很多網(wǎng)頁(yè)輸入框會(huì)直接吞掉部分字符或觸發(fā)校驗(yàn)這里interval控制每個(gè)字符的間隔秒數(shù)設(shè)0.05秒時(shí)速度接近普通人輸入既快又不容易丟字。wait_for是整套流程的節(jié)拍器RPA最大的翻車(chē)點(diǎn)往往是流程跑得太快——界面還沒(méi)反應(yīng)過(guò)來(lái)就執(zhí)行下一步所以“等待目標(biāo)出現(xiàn)”比“固定sleep幾秒”要可靠得多界面卡頓時(shí)固定sleep直接失效而輪詢能自動(dòng)延長(zhǎng)等待。3.3 用watchdog監(jiān)聽(tīng)文件夾讓流程自己?jiǎn)?dòng)很多自動(dòng)化任務(wù)的觸發(fā)方式不是“手動(dòng)運(yùn)行”而是“有新文件丟進(jìn)來(lái)就開(kāi)工”。常見(jiàn)場(chǎng)景是業(yè)務(wù)人員把導(dǎo)出的Excel報(bào)表放到一個(gè)約定文件夾RPA腳本監(jiān)測(cè)到新文件后自動(dòng)開(kāi)始處理。這里用watchdog實(shí)現(xiàn)一個(gè)輕量監(jiān)聽(tīng)器比寫(xiě)死循環(huán)輪詢要省資源得多。from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler import time class RpaJobHandler(FileSystemEventHandler): def on_created(self, event): # 只處理文件創(chuàng)建事件跳過(guò)目錄 if event.is_directory: return print(f檢測(cè)到新文件: {event.src_path}) # 這里調(diào)用實(shí)際的處理流程例如 process_file(event.src_path) def start_monitor(path./jobs): observer Observer() handler RpaJobHandler() observer.schedule(handler, path, recursiveFalse) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()on_created回調(diào)只在有新文件創(chuàng)建時(shí)觸發(fā)src_path給出完整路徑。之所以用事件監(jiān)聽(tīng)而不是寫(xiě)while輪詢是因?yàn)檩喸冇泄潭ǖ膾呙栝g隔文件處理時(shí)間會(huì)被延長(zhǎng)事件監(jiān)聽(tīng)是操作系統(tǒng)層面通知實(shí)時(shí)性更好CPU占用幾乎為零。recursiveFalse表示不遞歸監(jiān)聽(tīng)子目錄這能避免程序自己往目錄里寫(xiě)輸出文件時(shí)再次觸發(fā)事件造成無(wú)限循環(huán)——這一點(diǎn)非常關(guān)鍵輸出目錄和監(jiān)聽(tīng)目錄必須分開(kāi)或者輸出文件名做排除處理。正式使用中我一般會(huì)把監(jiān)聽(tīng)目錄和輸出目錄分開(kāi)成兩個(gè)文件夾這樣監(jiān)聽(tīng)器只看到輸入文件處理完畢后把結(jié)果寫(xiě)去另一個(gè)目錄互不干擾。3.4 拼裝一個(gè)最小但完整的流程把三個(gè)模塊擰成一股繩前面三個(gè)模塊單看都簡(jiǎn)單但串起來(lái)就能形成一個(gè)完整的自動(dòng)化閉環(huán)。拿一個(gè)典型任務(wù)舉例每天把某個(gè)報(bào)表軟件導(dǎo)出的CSV文件自動(dòng)合并、填入網(wǎng)頁(yè)表單并提交。整個(gè)流程用偽代碼級(jí)別就能表達(dá)清楚。# run_job.py from finder import find_template from actions import smart_click, type_text, wait_for import pyautogui def process_file(file_path): # 1. 打開(kāi)目標(biāo)網(wǎng)頁(yè)或業(yè)務(wù)系統(tǒng) pyautogui.hotkey(ctrl, t) type_text(http://internal-report.example) pyautogui.press(enter) # 2. 等待登錄按鈕出現(xiàn) login_btn wait_for(lambda: find_template(templates/login_btn.png)) smart_click(*login_btn[:2]) # 3. 定位文件上傳區(qū)域填入待處理文件路徑 upload_area wait_for(lambda: find_template(templates/upload_area.png)) smart_click(*upload_area[:2]) type_text(file_path) # 4. 點(diǎn)擊提交并等待成功頁(yè)面元素 submit_btn wait_for(lambda: find_template(templates/submit_btn.png)) smart_click(*submit_btn[:2]) ok_icon wait_for(lambda: find_template(templates/success_icon.png), timeout30) print(f文件 {file_path} 處理完成) if __name__ __main__: start_monitor(process_file)上面的代碼結(jié)構(gòu)上很清晰find_template負(fù)責(zé)視覺(jué)定位smart_click和type_text負(fù)責(zé)動(dòng)作執(zhí)行wait_for作為流程節(jié)拍器。邏輯上每個(gè)步驟之間都做了目標(biāo)出現(xiàn)校驗(yàn)其中任何一步失敗都會(huì)在wait_for處拋出TimeoutError外層捕獲異常后可以歸檔失敗文件、發(fā)告警通知。參數(shù)上有一個(gè)細(xì)節(jié)容易被忽視type_text填入文件路徑時(shí)路徑中如果有反斜杠建議先做一次路徑分隔符替換因?yàn)閜yautogui.write對(duì)反斜杠的處理在不同鍵盤(pán)布局下有差異。一般我會(huì)在拼接內(nèi)容前加一句 path.replace(\, /)犧牲一點(diǎn)Windows路徑原生化換取輸入環(huán)節(jié)的穩(wěn)定。4. 邊界參數(shù)與可靠性把腳本從“能跑”調(diào)到“長(zhǎng)期能跑”4.1 匹配置信度與多目標(biāo)策略什么時(shí)候該用0.9什么時(shí)候0.7就夠了confidence參數(shù)的選擇不是拍腦袋。目標(biāo)元素外觀越穩(wěn)定、屏幕環(huán)境越干凈閾值可以拉得越高。例如登錄界面上一個(gè)位置固定的按鈕背景是純色模板匹配的峰值通常在0.95以上此時(shí)把confidence設(shè)為0.9可以有效避免誤點(diǎn)。但如果目標(biāo)元素是表格里的某一行標(biāo)題欄包含大量相似的行結(jié)構(gòu)多目標(biāo)并存時(shí)最高相似度可能只有0.75左右閾值設(shè)得太高就會(huì)一直找不到。多目標(biāo)場(chǎng)景是另一個(gè)常見(jiàn)需求窗口里可能有多個(gè)相同的“刪除”按鈕你希望點(diǎn)的是某一行邊上的。cv2.matchTemplate直接返回的是全圖最高分的位置但對(duì)多目標(biāo)情況需要借助閾值化加連通區(qū)域分析來(lái)做。def find_all_templates(template_path, confidence0.8): screen pyautogui.screenshot() screen_cv cv2.cvtColor(np.array(screen), cv2.COLOR_RGB2BGR) template cv2.imread(template_path) result cv2.matchTemplate(screen_cv, template, cv2.TM_CCOEFF_NORMED) locations np.where(result confidence) points [] h, w template.shape[:2] for pt in zip(*locations[::-1]): center (pt[0] w // 2, pt[1] h // 2) points.append(center) return points這段代碼返回所有相似度超過(guò)閾值的目標(biāo)中心點(diǎn)。注意直接用np.where會(huì)把同一個(gè)目標(biāo)附近的重疊區(qū)域全部算進(jìn)來(lái)同一按鈕周?chē)赡軘D出十幾個(gè)點(diǎn)。實(shí)際使用時(shí)要再做一步去重按最小距離合并聚類(lèi)通常設(shè)置兩個(gè)中心點(diǎn)距離小于模板寬度的一半就視為同一個(gè)目標(biāo)。這個(gè)去重邏輯建議在流程里實(shí)現(xiàn)否則點(diǎn)擊“第二個(gè)刪除按鈕”時(shí)可能因?yàn)橹貜?fù)點(diǎn)導(dǎo)致鼠標(biāo)在一個(gè)按鈕上劃來(lái)劃去。4.2 超時(shí)、重試與失敗歸檔讓腳本具備自我保護(hù)意識(shí)線上長(zhǎng)期跑的腳本最怕的不是功能寫(xiě)錯(cuò)而是某個(gè)步驟卡住后無(wú)限等待或者失敗后把數(shù)據(jù)弄臟。RPAworker的做法是給每一步加超時(shí)超時(shí)后重試有限次數(shù)最終失敗則把輸入文件移動(dòng)到failures目錄并記錄日志而不是留在原地。import time import shutil from pathlib import Path def run_with_retry(action_func, retries3, timeout15): last_error None for attempt in range(retries): try: result wait_for(action_func, timeouttimeout) return result except TimeoutError as e: last_error e print(f第 {attempt 1} 次嘗試失敗剩余 {retries - attempt - 1} 次) time.sleep(2) raise last_error def archive_failed_file(file_path, reason): fail_dir Path(./failures) fail_dir.mkdir(exist_okTrue) dest fail_dir / Path(file_path).name shutil.move(file_path, dest) print(f失敗歸檔: {file_path} - {dest}原因: {reason})重試邏輯里每次間隔2秒是為了給界面留出恢復(fù)時(shí)間部分卡頓是瞬時(shí)抖動(dòng)兩秒后可能就恢復(fù)了。歸檔失敗文件比直接刪掉更穩(wěn)妥方便日后復(fù)盤(pán)或手動(dòng)補(bǔ)跑。這里有一個(gè)設(shè)計(jì)習(xí)慣值得強(qiáng)調(diào)腳本寧可在失敗時(shí)把流程停下來(lái)也不要嘗試用猜測(cè)去處理模糊情況。例如匹配到多個(gè)目標(biāo)無(wú)法決定點(diǎn)擊哪個(gè)時(shí)直接歸檔失敗讓人來(lái)救場(chǎng)八成比自動(dòng)賭一個(gè)要安全。4.3 執(zhí)行留痕日志、屏幕截圖與每步動(dòng)作證據(jù)不用等到出錯(cuò)才后悔不截圖。我習(xí)慣在每個(gè)關(guān)鍵動(dòng)作后保存一條帶時(shí)間戳的日志在匹配到目標(biāo)時(shí)順手截一張全屏圖存檔。這樣一旦流程跑歪可以從截圖里回放當(dāng)時(shí)界面到底長(zhǎng)什么樣。import logging import pyautogui from datetime import datetime logging.basicConfig( filenamerpa_run.log, levellogging.INFO, format%(asctime)s [%(levelname)s] %(message)s ) def log_with_screenshot(step_name): ts datetime.now().strftime(%Y%m%d_%H%M%S) shot_path f./screenshots/{step_name}_{ts}.png pyautogui.screenshot().save(shot_path) logging.info(f步驟 {step_name} 完成截圖: {shot_path})每個(gè)步驟留一張截圖看似占磁盤(pán)空間實(shí)際上單張PNG截圖大約幾百KB一天跑幾十個(gè)步驟也就幾十MB完全可接受。留痕的價(jià)值在排查問(wèn)題時(shí)才能體現(xiàn)某天早上有三筆單子沒(méi)處理回看日志和截圖能直接定位卡在哪一步是按鈕沒(méi)加載出來(lái)還是彈窗擋了道。這比對(duì)著屏幕發(fā)呆猜原因高效得多。日志級(jí)別建議分級(jí)記錄正常流程打INFO匹配失敗打WARNING歸檔失敗打ERROR分析時(shí)直接按級(jí)別過(guò)濾。5. 避坑指南RPAworker跑不起來(lái)、跑不穩(wěn)的五個(gè)典型坑5.1 遠(yuǎn)程桌面會(huì)話下鼠標(biāo)鍵鼠動(dòng)作失效現(xiàn)象腳本在本機(jī)運(yùn)行一切正常但放到遠(yuǎn)程桌面環(huán)境里掛著的時(shí)候動(dòng)作執(zhí)行一會(huì)兒就停了pyautogui截圖看起來(lái)是正常的但點(diǎn)擊沒(méi)有反應(yīng)。原因鎖屏或斷開(kāi)的遠(yuǎn)程桌面會(huì)話里操作系統(tǒng)不會(huì)渲染實(shí)際的桌面畫(huà)面。pyautogui的截屏函數(shù)拿到的可能是純色或上一幀的靜態(tài)圖鍵鼠模擬事件也會(huì)被系統(tǒng)丟棄因?yàn)樽烂嬉呀?jīng)處于不可交互狀態(tài)。解決讓自動(dòng)化任務(wù)跑在物理機(jī)或始終保持活動(dòng)狀態(tài)的會(huì)話里。如果確實(shí)需要遠(yuǎn)程掛機(jī)可以嘗試用虛擬顯示器或保持遠(yuǎn)程桌面窗口不被最小化同時(shí)設(shè)置系統(tǒng)電源計(jì)劃為“從不休眠”。更穩(wěn)妥的做法是任務(wù)調(diào)度器注冊(cè)成交互式任務(wù)保證會(huì)話處于激活狀態(tài)。這是一個(gè)硬約束不是靠代碼能繞過(guò)去的。5.2 屏幕縮放比例不一致導(dǎo)致匹配全偏現(xiàn)象模板匹配在本機(jī)分辨率下準(zhǔn)確率很高換到同事機(jī)器上同一個(gè)模板再也找不到或者位置偏了一大截。原因Windows顯示設(shè)置里縮放比例不同例如一臺(tái)是100%另一臺(tái)是125%。pyautogui的截圖和坐標(biāo)基于物理像素如果系統(tǒng)做了縮放拉伸截圖實(shí)際尺寸和邏輯坐標(biāo)之間會(huì)出現(xiàn)換算偏差模板里記錄的像素位置和運(yùn)行時(shí)屏幕內(nèi)容就不對(duì)應(yīng)了。解決所有運(yùn)行RPAworker的機(jī)器統(tǒng)一顯示縮放比例。如果實(shí)在無(wú)法統(tǒng)一需要把截圖分辨率做歸一化處理在匹配前將屏幕截圖縮放為與模板采集時(shí)相同的DPI設(shè)定。這個(gè)方案能做但復(fù)雜最省事還是統(tǒng)一環(huán)境。另外注意DPI縮放不要設(shè)“自定義”級(jí)別預(yù)設(shè)的100%、125%、150%經(jīng)過(guò)的路徑不同模板匹配的偏差模式完全不一樣。5.3 中文輸入法導(dǎo)致文本輸入錯(cuò)亂現(xiàn)象type_text輸入中文或混合文本時(shí)輸入框里出現(xiàn)拼音字母、英文字母甚至觸發(fā)輸入法聯(lián)想彈窗把后續(xù)流程全部打亂。原因pyautogui.write在Windows上通過(guò)模擬鍵盤(pán)事件逐字符輸入當(dāng)系統(tǒng)處于中文輸入法狀態(tài)時(shí)按鍵會(huì)被輸入法攔截并轉(zhuǎn)換為拼音組合而不是直接上屏漢字。解決在輸入前切換到英文輸入法。常見(jiàn)做法是模擬快捷鍵切換輸入法然后發(fā)送一個(gè)英文輸入事件把狀態(tài)徹底切到英文模式。如果系統(tǒng)里裝了三方輸入法快捷鍵可能不是默認(rèn)的CtrlSpace需要提前確認(rèn)。另一個(gè)更可靠的方案是改用剪貼板粘貼把文本寫(xiě)入剪貼板然后發(fā)送CtrlV完全繞開(kāi)字符級(jí)鍵盤(pán)模擬。import pyperclip import pyautogui def type_text_via_clipboard(text): pyperclip.copy(text) pyautogui.hotkey(ctrl, v)parampyperclip提供跨平臺(tái)的剪貼板讀寫(xiě)接口。這個(gè)方案對(duì)中文、特殊字符、換行符都友好粘貼操作是一次整體事件不逐字拆解也就不存在輸入法干擾的問(wèn)題。我現(xiàn)在的做法是默認(rèn)走剪貼板只有目標(biāo)系統(tǒng)禁止粘貼時(shí)才回退到逐字符輸入。5.4 按鈕是動(dòng)態(tài)渲染的模板匹配峰值忽高忽低現(xiàn)象流程跑了幾次之后某個(gè)按鈕偶爾找不到。人工看截圖能清楚看到按鈕就在那里但相似度分?jǐn)?shù)就是達(dá)不到閾值。原因不少現(xiàn)代網(wǎng)頁(yè)的按鈕有hover、focus、active等狀態(tài)鼠標(biāo)經(jīng)過(guò)時(shí)顏色會(huì)加深、邊框會(huì)發(fā)光。模板里截的是靜態(tài)灰底按鈕運(yùn)行中按鈕正好處于高亮狀態(tài)或者背景動(dòng)畫(huà)恰好擋住了一部分就會(huì)導(dǎo)致匹配分?jǐn)?shù)下降。解決模板截取時(shí)盡量選按鈕的最穩(wěn)定外觀狀態(tài)例如默認(rèn)灰色底而不是hover后的高亮色。如果按鈕位置固定還可以考慮退而求其次截取按鈕旁邊的靜態(tài)文案或區(qū)域圖標(biāo)作為錨點(diǎn)因?yàn)槲陌副劝粹o顏色穩(wěn)定得多。匹配閾值也不要卡死在0.9給動(dòng)態(tài)渲染留一點(diǎn)余量一般0.8上下比較合理。5.5 殺毒軟件攔截鍵鼠操作或截屏權(quán)限現(xiàn)象腳本運(yùn)行到某個(gè)動(dòng)作時(shí)莫名中斷有些機(jī)器上直接報(bào)權(quán)限錯(cuò)誤有些運(yùn)行日志什么都沒(méi)有就停了。原因部分安全軟件會(huì)把自動(dòng)化工具模擬的鍵鼠事件識(shí)別為可疑行為直接阻止進(jìn)程級(jí)別的輸入注入。截屏操作在某些帶數(shù)據(jù)防泄漏策略的環(huán)境下也會(huì)被禁止導(dǎo)致pyautogui.screenshot返回黑屏或異常。解決先把腳本加入殺毒軟件的白名單尤其是對(duì)Python解釋器進(jìn)程和腳本目錄放行。如果企業(yè)環(huán)境有統(tǒng)一安全策略需要IT側(cè)配合開(kāi)放權(quán)限。這個(gè)坑不好從代碼層面完全繞過(guò)如果目標(biāo)機(jī)器安全策略很?chē)?yán)需要考慮換一種自動(dòng)化方式或者把任務(wù)放到不受監(jiān)控的獨(dú)立環(huán)境里跑。遇到權(quán)限錯(cuò)誤時(shí)優(yōu)先查系統(tǒng)日志里的進(jìn)程攔截記錄比反復(fù)調(diào)代碼效率更高。6. 進(jìn)階技巧把固定流程升級(jí)成可配置的規(guī)則驅(qū)動(dòng)任務(wù)前面講的是把一條流程寫(xiě)死在代碼里實(shí)際用一段時(shí)間后你會(huì)發(fā)現(xiàn)需求經(jīng)常變可能是上傳按鈕的位置變了可能是要處理的文件類(lèi)型多了一種也可能是填表字段順序調(diào)整了。每次都要改代碼并重新部署太麻煩。更實(shí)用的做法是把“步驟順序”和“目標(biāo)元素模板”拆成配置代碼只保留一個(gè)通用的執(zhí)行引擎。做法并不復(fù)雜準(zhǔn)備一個(gè)JSON文件描述流程步驟每一步包含操作類(lèi)型、模板文件名、輸入內(nèi)容、超時(shí)時(shí)間這幾個(gè)字段。執(zhí)行引擎讀取配置后按順序調(diào)用對(duì)應(yīng)動(dòng)作函數(shù)。例如[ {op: open_url, url: http://internal-report.example}, {op: click, template: login_btn.png, confidence: 0.8, timeout: 15}, {op: type, template: username_input.png, text: admin, via_clipboard: true}, {op: type, template: password_input.png, text: ****, via_clipboard: true}, {op: click, template: submit_btn.png}, {op: wait_fixed, seconds: 2}, {op: click, template: upload_area.png}, {op: type, template: file_path_input.png, text: {input_file}, via_clipboard: true}, {op: click, template: confirm_btn.png} ]執(zhí)行引擎里用一個(gè)字典把op名稱映射到具體函數(shù)再用一個(gè)循環(huán)順序處理。這里有個(gè)設(shè)計(jì)要點(diǎn){input_file}這類(lèi)占位符在執(zhí)行時(shí)統(tǒng)一替換成本次任務(wù)的真實(shí)數(shù)據(jù)這樣同一個(gè)配置可以反復(fù)處理不同文件不需要為每個(gè)文件改一行代碼。模板文件名指向模板目錄下的PNG圖片新增界面元素時(shí)只需要截一張圖放進(jìn)去不用動(dòng)代碼。這個(gè)技巧帶來(lái)的效果是改流程變成改配置、換模板幾行JSON加一張截圖就能上線。穩(wěn)定性上反而比硬編碼更好維護(hù)因?yàn)闃I(yè)務(wù)人員自己也能看懂配置里每一步在干什么溝通成本大幅下降。配合第4章的重試與歸檔機(jī)制整個(gè)腳本更像是流水線上的一臺(tái)小設(shè)備而不是某一次性的手工腳本。我自己的使用習(xí)慣是每個(gè)流程至少留一套調(diào)試模板和一套運(yùn)行模板調(diào)試模板帶明顯邊框方便肉眼確認(rèn)匹配位置。配完流程先用一次真實(shí)文件小跑看截圖日志確認(rèn)每一步都點(diǎn)對(duì)地方再交給定時(shí)任務(wù)長(zhǎng)期跑。長(zhǎng)期跑的過(guò)程中每周扒一次日志和截圖目錄觀察匹配分?jǐn)?shù)有沒(méi)有緩慢下降的趨勢(shì)一旦發(fā)現(xiàn)有下滑跡象提前換模板或調(diào)閾值比等到跑失敗了再救要省心得多。希望這套方案幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
九月丁香| 精品日韩人妻精品一二三区| 2024人人操人人摸| 久久草草欧美精品| 久久午夜色播影院免费高清| 中文字幕制服诱惑| 97少妇人妻中文字幕久久| wwwss在线观看| 欧美性爱中文字幕无线码| 破处bbq| 少妇无码太爽| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 欧美综合色图网| 亞洲久久直播| 中文字幕精品日韩中文字幕| 女人与公拘交酡2020视频| 情色五月天就去干| 亚洲九九视频在线观看| 青青草日本中文字幕| 91无码人妻| 玖玖97综合| 天天干天天爽| 欧美久久九九| 天美一二三在线观看Av| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 欧美黑人168页欧美黑人167| 97情超碰色| av东京热男人的天堂| 一区中文字幕二区日韩| 久久免费老司机精品| 日韩无码专区| 狠狠五月天| 9久久精品| Blackedraw视频一区二区| 欧美特大AA级黄片| 欧美无圣光在线| 青娱乐手机日韩在线视频| 天美久久久久| 亚洲中文字幕熟女| 精品国产乱码久久久久久蜜臀| 天天做天天爽| 久久9精品网站| 手机在线免费看的av| 亚洲第一页综合在线| 亚州欧美总和| 后入福利| 怡红院久久老司机| 亚洲欧美999| 9Ⅰ超碰| 亚洲精品电影| 91精品人妻偷情| 丰满人妻一区二区中文| 亚洲天堂一二| 99re在线| 涩涩这里只有精品视频| 日本高清_区二区三区| 思思性爱| 天天射影院| 亚洲天堂男人在线| 伊人久久亚洲色欲综合网站| 亚洲国产成人精品女人久久久| 9久久久久久| 国产视频第二页| 九九综合九九综合| 欧美日韩国产黄色片| 四色永久成人网站| 婷婷中文网| 激情四射婷婷四五月天| 中文字幕一二三av| 人人操欧美风骚| 伊人影院日本| 午夜精品五区| 密臀在线免费观看| 中文久久96| 日韩BBN| 好涩综合| 色婷婷丁香五月| 呦呦影院| 男人的天堂2018东京热啪啪啪| 五月综合视频| 大香交| 国产AV久久野战精品| 呻吟 欧美 日本 中出| 天天操天天射青青草| 热久久99999| 欧美综合站| 国模无码一区二区三区在线| 91久久国产综合久久| 欧美视频第二页| 国产丸一视频| 欧美探花网| 婷婷大香蕉| 亚洲高清视频在线观看| 欧美中日韩XXXX| se吧提供国产乱老熟视频胖女人| av九九| 夜草欧美| 视频一区二区三区精品| 一区二区三区精品黑丝白丝酒店对鸡 | 亚洲偷91色| 人妻铁牛TV| 日韩成人大片一区二区| 国产呦精品一区二区三区下载| 久久精品一区二区三区蜜桃臀| 国内毛片热久久思思热| 熟女人妻一区二区三区| 大香樵伊人网| 伊人久久亚洲色欲综合网站 | 精产品久久| 男女猛烈无遮掩视频免费软件| 人妻人人操| 日本免费一区二区不卡| www.av家庭乱伦| 老熟女综合网 | 国产风韵犹存熟妇三区| 亚洲天堂男人| 天天综合91| 人妻少妇久久中文字幕一区二区 麻豆 | 色波多| www.夜夜操| 97欧美色综合| 国产色呦呦| 男生女生啊啊啊啊| 日日操免费视频| 东京太热久久久| 亚洲午夜福利在线影院| 91精产一区二区三区| 人人操人人干xxx| 熟女精品一区二区三区| 九七色图| 国产92麻豆天美精品色欲5| 99少妇| 亚洲蜜臀懂色| 春色综合网| 99热| 97超碰9| 日韩欧美亚洲自拍偷拍| 欧美另类色| 91社区伊人| 麻豆AV一区二区| 乱伦强奸区日韩| 久久国产视频专区一二三| …亚洲黄色厕厕女女在线播…| 日本二三四区| 岛国不卡超碰护士AV在线播放| 13小男生GAY自慰脱裤子| 日本超碰在线国产一区| 国产精品视频内谢女人| 97中文字幕一区| 91超级碰碰| 91精品丝袜久久久久久| 久九干| 26uuu成人影片| 天堂精品| 在线欧美69V免费观看视频| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 天天艹天天日| 限制级中的三级片中的黑粗大屌屌日人妻熟女| 99久久网站| 欧美第二页| 校园春色欧美色图| 精品在线观看视频在线| 伊人热综合| av72网| www.色操逼| 欧美色干| 51一区二区三区| 蜜桃久久综合视频| 九九干| 国产免费内射视频| 欧美暴力猛交| 97大色网| 高清不卡视频| 久久亚洲婷婷| 国产一级内射无挡观看| 91GD.COM| 视频二区美腿丝袜制服人妻欧美| 先锋影音av先锋一区| 俺也射| 久久久久骚| 在线综合色| 中文字幕蜜乳av| 国产少妇内射| 日韩亚洲97| 精品无吗久久| 日韩人妻精品久久久久| 尤物一级在线免费观看| 91丨豆花丨熟女| 国产精品乱码久久| 久肏视频字幕| 91精产一区二区三区| 夂久色| 狠狠色噜噜狠狠狠狠狠色综合久久| 久久久久久九九九九| 亚洲男人的天堂网| 青草视频人妻在线观看| 日韩9999| 9999九九九久久久| 无码人妻精品一区二区中文 | 国产午夜福利专区综合| 一起草三级AV电影在线观看 | 操香逼| 91国产丝袜美女| 亚洲天堂另类小说男人| 精品久久久九九九孕妇| 丁香五月天啪啪| 美女午夜福利免费视频| 高清无码一区二区三区| 国产一区二区免费福利片| 偷拍视频青青草在线视频| 日本 免费 一区二区三区 久久香蕉| 国产欧美美女免费观看视频| 330dv亚洲成年视频网| 偷拍欧美激情| 日韩精品亚洲专区在线影视| 欧美一区二区三区四区综合| 国产欧美日韩一区二区三区| 99热在线只有精品| 日韩青久久| 九九热精品| 天美精品一区二区三区四区在线观看| 中文字幕精品人妻丝袜| 精品一区96| 艹我哪美一区无码| 久都青青视频| 日日摸日日碰| 亚洲欧洲自拍| 三级AV入口| 岛国黄| 久久久久久久久九九久孕交| 欧美亚男人的天堂| 91夜夜蜜桃臀1区2区3区| 91色鬼| 超碰中文字幕人妻草一区| av午夜玫瑰| 亚洲宗合网| 不卡六六在线91| 中文三一区| 久久久97| 日韩av一级黄片| 爽爽淫人网| 久久综合久久综合人久久夜精品| 亚洲欧洲色情高清| 久久久久97| 亚洲三级网址久久最新| 久久成人午夜精品影院| 农村女一级毛卡片| 蜜乳AV一区| 国产偷仑| 久久久久亚洲av综合波多野制衣| 午夜后入| 囯产乱伦一区二区三女| 综合色91| 日本一区二区三区四区免费观看| 韩日精品四区| 久久久免费懂色| 国产精品一区二区密臀| 国产传媒操逼视频| 天天日天天屌天天操| 国产精品69久久久久久久| 91殴美| 日本性爱网址| 欧美在线视频播放| 国产欧美日本亚洲精品| 丁香色色网| 少妇天堂| 色诱中文字幕| 涩涩这里只有精品视频| 婷婷五月天影院| 久久亚码| 中文色综合| 色欧美天天| 蜜臀av中文字幕| 婷婷五月天基地| 一级AAA片一区二区三区| AV女资源| 国产乱子伦一区二区三区免看| 人妻一区视频| 啊嗯嗯啊好大好爽| ji熟女.com| 人妻少妇久久久| 日本不卡中文| 国产九九九九九九九九| 亚洲国产中文字幕| 免费公开人人操| 2020中文字幕| 丝袜美腿制服人妻二区中文字幕 | 亚洲男人的天堂va亚洲男人社| 超碰在线观看av不卡| 久久久亚洲精品电影免费看| 综合 亚洲 欧美| 91精品黄在线观看| 久久久久久人| 九九在线精品| 日本色日夜干| 中文字幕精品人妻丝袜| 国模私拍一区二区三区神乳| 久插综合| 操我无码| 91综合网站| 久久久蜜桃一区二区三区| 青青久久艹| 嗯嗯啊在线视频| 99精品人妻| 欧美日韩国产中文精品字幕自在自线,| 老熟妇91| 欧美日韩情色一区二区| 性videos欧美熟妇hdx| 不卡码视频| 欧美精品23| 日韩人人精品| 欧美激情综合色综合啪啪五月| 91岛国动作片| 亚州乱码中文字幕综合久久久| 18禁在线视频| 新精精品久久精品| 天美传媒精品久久视频| 91xingse| 熟女字幕| 天天色怡春院| 欧美三级中文字幕hd| 日韩欧美午夜视频在线| 韩国黄片aaaa| 夜夜操天| 黑人天8A∨高清网站| 立川理惠被中出无码| 好爽,再快点啊哈嗯嗯嗯嗯| 18禁在线视频| 亚洲欧美清纯| 91九九九吃| 久久九九99| 国产v片在线免费观看| 96久久久精品| av天天在线观看| 黄色av网站在线播放| 四虎在线免费视频| 青青草自拍视频在线播放| 中字幕人妻一区二区三区| 久9热| 男女性感激情网站| 67914亚洲精品| 国产一区自拍欧美日韩| 天天影视综合色| 国产精品久久9| 亚洲国产成人高清在线| 青春草莓视频在线观看网址| 97超级久久| 和协影院中文字幕三区| 亚洲情色一区综合| www.99视频| 99国产精品视频尤物| 超碰色97| 少妇天堂| 97久久超碰日韩精品| 黄网站黄视频网站进入口| 丁香五月色情| 欧美性爱在线无码| 午夜一区二区三区国产| 大香蕉人妻| 一级毛片久久久久久久女人18| 亚洲天堂男| 99爱爱| 中文字幕在线观看第二页| 国产AV高清AV无码| 日韩丰满熟妇| 日韩欧美俄罗斯A片| 大JI巴好深好爽又大又粗视频| 精品9999| 日韩色女精品| 国外91| 天天摸夜夜操视频| 国产乱弄免费在线视频。 | 影音先锋一区二区在线资源| 中文一区二区婷婷视频| 天天色悠悠激情| 开心五月婷婷激情| 欧美亚洲丝袜人妻制服99| 夜间福利片1000无码| 日本黄大片在线观看视频| 天堂成人网| 91天天美女| 伊人96在线| 久久久久久久久国产| 一本一首道人妻少妇免费久久| 不卡人妻少妇精品毛片一区23区视频| 天天综合精品| 涩爱AV在线| 黄色小说亚洲| 老鸭窝黄色视频网站| 欧美图片色综合| 少妇天堂网络| 人妻熟女一区二区三区在线| 亚热日本熟女| av2014 日韩在线中文字幕| 青青草乱入乱欲视频在线观看| 久久久久久久伊人精品| 国产欧美精选自拍一区| 自拍偷拍 日韩无码| 97色亚洲| 日本一级真人黄色性爱视频| 性色AV蜜色av色欲av| 日韩免费av片高清无码| 亚洲精品aa久久伊人| 亚洲AV无线| 小情侣高清国产在线视频| 日本三级日本三级99| 97亚洲综合电影| 色婷五月天| 国内毛片无遮挡国产| 国产嫩草精品A88AV| 精品午夜福利| 欧美亚洲特P| 久久久无码视频| 亚洲āv网址在线观看| 人妻81p| 免费一级毛片在线视频观看| 蜜桃久久综合视频| 蜜桃丰满熟妇av无码区不卡| 加勒比综合网| 亚洲天堂7777| 内射日韩大臀美女| 99热日| 丰满人妻一区二区三区免费| 国产精品盗摄 偷窥盗摄| 精品国产肉丝袜在线拍国语| 青青草视频爽一爽| 欧洲亚洲人妻无码高清久久三区四区| 免费视频在线一区二区不卡| 91操操| 青春草A| 亚洲色人阁| 亚洲图片激情综合另类| 日本在线一二| 欧美丝袜亚洲| 一本一道波多野毛片中文在线| 亚洲人成网www| 69视频入口| 欧美日韩操逼嗦吊| 亚洲免费97免费| 久久系列| 欧美综合区| 97AV在线免费观看| 久久国产熟女影院| 久热69九色熟妇97| 人妻另类| 亚洲一本大道中文字幕无码在线| 欧美暴力猛交| 永久免费观看的毛片的网站| 国产精品电影| 97超碰国产亚洲精品| se吧提供91精品国产91久久久久久 | 91肉片| 色五月婷婷五月天| 日本道人妻久久久在线不卡色视频| 一中国女人毛片水真多| 2020视频1区2区3区| 亚洲第一男人天堂| 午夜寂寞欧美| 四虎免费视频| 人人摸人人干人人拍97| AV丝袜东京热| AAAAAAAAA黄片| 美女淫穴| 中文字幕精品一区二| 99re3这里只有精品| 丝袜亚洲综合| 91女网站| 久久精品国产99精品亚洲蜜...| 日韩亚洲美女一区久久| 久久69| 色爽爽文学| 91丝袜| 久久精品一区二区三区不卡| 一区二区高清视频| 中文字幕一区二区三区人妻少妇在线| 视频不卡中文字幕| 情色av电影| 欧美不卡在线一区二区| 日韩av色图综合| 秋霞一级A片黄色视频| 秋霞午夜视频一区二区| 国产一区二区三区白丝| 国产精品在线一区二区| 久久久成人国产精品无码| 熟女久久久| 天堂网 主播 亚洲| 国产成人无码久久精品| 大奶的诱惑| 五月天春色激情网| 国产亚洲精品农村妇女| 天天干1区2区在线| 亚州伊人色综台| 乱伦日本中文自拍| 夜色97| 色五月首页| 97一区二区蜜臀| 蜜乳AV色欲AVAV无码| 日本孕妇孕交| 2020国产精品| 国产精品乱人伊人网| 国产精品又黄又猛又粗| 亚熟hd视频在线| 精品国产久热在线观看| 亚洲婷婷丁香在线| 国外91| 9 9精品一区二区三区| 中文字幕三四区| 午夜精品久久久久久久99热影院 | 久久精品人体| 18禁美女裸体无遮挡啪啪| 人妻 欧美亚洲| 男人的天堂网免费| 高清成年美女黄网站免费大全 | 偷窥自拍亚洲天堂网爆| 亚洲一级黄色毛片| 国产乱码久久久| 麻豆国产原创AV色哟哟 | 午夜福利一区二区三区四区五区色婷婷| 色综合色欲色综合色综合色综合| 极品白嫩美少妇在地板上位骑射淫水泛滥| 试看福利| 搡老女人老妇女老妇老熟女怎么读| 国产精品嫩草影院免费| 在线视频97| 亚洲男人天堂2| 五月婷亚洲精品天堂| 大香蕉综合在线| 素人播放一区| 青青草色插素人| 亚洲97久久精品亚洲| 啊v视频在线观看| 国产亚洲色婷婷久久99精品91葵花宝典| 国产日韩欧美三级片| 啊啊啊啊嗯嗯嗯用力好爽 | 中文字幕高清20页视频| 成功精品影院| 91天美传媒在线| 情色五月天就去干| 欧美情色男人的天堂| 婷婷99狠狠躁天天躁| 91人妻中文| 亚洲欧美国产中文视频| 酒色综合网| 国产91美女视频| 久热大香蕉网站| 久久精9| 91久久国产精品| 无码操逼网| 韩国一级做A片免费的| 精品在线观看视频在线| 日韩国产九九精品一区二区三区毛片| 狠狠久久手机视频精品| 欧亚日韩综合精品国产| 国内精品久9| 国产精品网址| a级免费在线观看| 日韩激情毛片一级久久久| 强奸乱伦中文字幕AV| 亚洲高清无毛一区二区| 国产一区二区成人av在线播放| 91久久| 91人人| 亚洲色图加勒比| 欧美影音在线| 黄网站黄视频网站进入口 | 国产狂喷潮在线精品| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 久久久中文| 99久久久久| 六月丁香啪啪| 欧美嗯啊……在线观看视频免费| 啊啊啊啊啊啊啊国| 天美一二三在线观看Av| 亚洲成人妻日韩在线| 免费成人在线熟妇网| 亚洲宗合网| 欧美97免费| 欧美资源| 日本成人A片网站| 最新中文字幕精品在线| 三级片网站在线播放| 亚洲美腿丝袜香蕉影视欧美成人| 日韩久久激情精品| 九九久久国产精品怡红院| 久久久久久久久久久精| 婷婷五月天成人网| 精品久久久av| 亚洲国内精品成人不卡| 69久久| 久久九色| 顶级丝袜熟女一区二区三区| 欧美日韩系列| 校园春色亚洲欧洲| 夜夜高潮夜夜爽高清视频一| 风月影院男女十八禁| 蜜区区视频79| 国产成人 综合亚洲 天堂| 日本一区二区不卡精品| 97超碰jingpin| 超碰99热中文字幕| 哈哈操电影| 午夜操逼不卡| 激情婷婷五月天| 97er欧美性| 青青草福利视频| 国内毛片婷婷六月色| 欧美另类色图片| 嗯嗯啊啊好大好爽| 欧美亚洲情色| 国产高潮AA片免费看| 欧美se亚洲| 少妇激情一区二区三区视频| 日本精品无码三级网站| 97色冈| 亚洲,欧美,综合网| 国产最新小视频在线播放下载| 伊人久久婷婷| 日韩大香蕉精品在线视频| 欧美综合网在线| 静品嫩模一区二区| 粉嫩小泬久久久一区二区| 91这里只有精品| 欧美婷婷五月天| 啊啊啊啊好大好硬啊啊啊啊啊| 超碰78| 99精品网| 精品人妻少妇| 亚洲精品国产精品乱码不99| 成人熟女区| 伊人五月天婷婷| 亚洲综合春色| 欧美人妻少妇| 亚洲精品视频二区| 69久久| 欧美做爰无码A片视频| 日本欧美一区二区三区免费| 色综合九九| 99热在线观看| 久久香蕉国产线看观看猫咪av| 国产h片在线观看视频| wwwxxx日本爽| 啊啊啊快操我视频| 亚洲视频,小说| 亚洲一区二区三区春色| 蜜臀精品1区2区| 思思久热在线精品66| 大香蕉宗合网在线| 国产深喉视频一区二区| 精品超碰中文在线| 亚洲欧美电影| 国产13区| 久久精品久久久久久久久| 97久久精品国产| A级片日韩欧美国产欧美视频精选观看| 伊人成人中文字幕久久网| 中国熟妇| 亚洲18禁| 操逼网站网站| 91性高| 黄片免费看的| 天天日骚逼熟女| 青青草天天亲夜夜操网| 久 久无码人妻AV| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 人妻一区久久二区三区色播| 国产SV一线| 大香蕉av在线| 久久爱超碰网| 精品国产AV一区天美传媒| 人人操人人摸人人看人人插| 自拍亚洲综合| 国产精品久久久久9999小说| 日本三级黄页| 凹凸视频在线一区二区| 日本一天色道久久久精品视频| 国产中文精品一区二区在线观看| chaopen97久久| 男人兔费天堂| 免费人成在线观看网站品爱网| 亚洲性猛| 亚洲色图大香| 在线岛| 成人草草视频| 三级片大波波| 久久久久九九九| 亚洲国产熟妇综合色专区| 国产成人一级av88| 婷婷av在线中文字幕| 99999久久久久9国产精品| 强奸乱伦 亚洲一区| 五月天欧美色图| 天天操天天舔| 口爆吞精在线观看| 久久精品中文字幕无码l| 天天爽入口| 九九九午夜| 51一区二区三区| 日韩一级二级三级免费看完整版| 亚洲色91C| 亚洲另类综合欧美| a级成人毛片免费视频高清| 91骚熟女| 国产伊人精品在线| 大香蕉一人在线| 99性爱视频| 黄色小视频日本txt| 日韩在线国产字幕| 美女天天干| 和协影院中文字幕三区| 精品妇女一区二区三区| 五月天黄色激情视频| 人人人摸人人| 久久黄人人爽视频| yazhouzaixian| 欧洲亚洲人妻无码中字久久三区四区| 九九人人操| 日韩成人精品视频自拍| 国产精品探花色| 亚洲男人电影天堂| 91色宗合| 91日韩网站| 亚洲诱惑天堂 | 外国91| 国产suv精品一区| 在线免费试看60秒| 久噜噜| 超碰综合色| 欧美性战999| 国产成人资源| 亚洲色图激情小说| 精品人妻伦一二三区久久| 中国探花熟女| 亚洲乱熟女一区二区三区大香蕉| AV污污污污| 午夜120视频在线观看| 欧美亚洲一级在线观看| 吖在线不卡一区二区国产剧情| 久久综合九色综合欧洲98| 精品69网| 欧美色宗合| 国产一级舔足在线观看| 日本欧美中文字幕| 91九色丰满高潮| av一区二区三区 中文| 在线无码网站| 日日干夜夜欢| 尤物视频网 刘玥| 尤物视频偷拍免费| 久久后入制服| 蜜桃成人1区2区3区| 国产精品午夜高潮呻吟久久av| 极品色综合| 久久久亚洲熟妇熟女| 久久久久久九九九| 精品一区二区三区丰满熟女-亚洲欧美一区 | 97天堂| 九热中文字幕| 96久久久| 亚洲无码超碰免费| 日韩国产欧美伦理在线| 小草三级久久观看| 99亚亚热| 国产白领连续中出在线观看| 国产农村妇女精品1区二区| 欧美性暴力猛交XXXX| 极品后入免费视频| Aa东京男人的天堂| 欧美亚洲首页| 岛国免费视频在线| 一级黄色性爱A级片| 一级黄色影片| 日韩二级| 嗯嗯啊啊啊啊轻点视频| 亚洲视频精选| 偷拍三区| 4399成人黄A片| 天天亚洲综合| 黑白配性爱AV成| 在线αⅴ| 亚洲第一无码播放立川理惠| 99色综合| 老女人老91妇女老热女| 伊人九九| 男人天堂黄片| 五月丁香综合| 日韩电影天堂视频二区三区| 99re这里只有| 亚洲av综合色区图片亚洲| 免费久久精品麻豆一区二区av| 国产乱婷婷精品二区三区| 色欲蜜臀AV| 欧美精品久久久久久久丰满| 亚洲97在线观看| A V少妇特黄三级| 美女91| 丝袜AV一二三区| 久久免费少妇| 97玖玖人妻| 岛国1区2区3区在线观看| 激情小说亚洲| 116美女午夜| yaouchengrenav| 久久蜜色情在线视频xxx免费观看| av一区二区三区四区| 欧美猛交黑寡妇中文字幕| 操逼操逼视频操逼| 熟妇一区,二区,三区。| 亚洲 日韩 欧美 国产综合体| 超碰97精品| 91新在线欧美| 黄色免费网页无码| 91性情| 欧美色66| 国产又大又硬又长又粗| 97超碰9| 久久偷拍人| 女人双腿搬开让男人桶| 日日操夜夜操天天操免费观看麻豆| www.欧精品| 日韩美女操b| 国产精品久久久久久久久久久久久久| 射丝袜高跟鞋99| 亚洲成人久久一区二区| 欧美高清16| 秋霞午夜视频一区二区| 婷婷五月天久久久| 被男人吃奶很爽的毛片| 91AV国产精品| 欧美熟妇乱码在线一区| 人人干人人搞人人摸| 亚洲丝袜诱惑| 日韩综合97P| 成人五月香网在线| 操操逼操操逼操操逼逼| 日韩少妇无码| 精品欧美日韩在线观看| 精品无码一区二区| 无码日韩网站| 操逼无码操逼| 国产成人精品网站| 午夜毛片高清免费不卡| 国产精品一区人妻精品阁在线| 久久欲| 99999re| 综合情欲网| 亚洲一二三精品久久网 | 96AV久久久| 你懂得91| 亚洲囯产精品女人久久久| 欧美天天综合网版| 97爱啪| 东北女人的毛片| 91粉芽高清在线一区二区| 色婷婷视频| 日本αv| 69一区二区三区| 国产AV线| 91影视亚洲| 色色99| 日韩99999色| 日本超碰在线国产一区| 自拍偷拍2025在线观看| 激情网色| 老外又粗又长一晚做五次| 99精品人妻| 清纯唯美第一页| 日本一级不卡一二区| 国产精品在线网站| 日韩AV一区二区三区三州三州| 91久久久久久| 人妻-91porn| 玖玖资源综合在线视频| 欧美国产精品| 国产精品免费1区2区视频| 白丝av| 国产精品扒开腿做爽爽爽视频| 性生活性生大爱77AV国产| 中文在线视频| 国产精品国产| 亚洲天堂电影网| 很很很很操| 亚洲精品不卡一二三区| 欧洲精品久久| 久久久久9| 人妻激情在线视频| PMv在线观看| 青草伊人网| 99热大香蕉伊在线| 国产精品九九| 久久影视二区三区行押| 午夜综合在线| 长久操视频| 日韩色图 一区二区| 久久九操在线观看| 舔舔啊| 日本熟妇自慰性高潮一区二区三区| 色臀aV| 伊人久大| 欧美色性情| 免费AV中文网在线观看| a男人的天堂久久一级A毛片| 99久久精品无码一区二区毛片免费| 欧美一级美片在线观看免费| 伊人久久亚洲中文字幕| 青青草吊丝| 少妇69中文| 伊人久久亚洲色欲综合网站 | 久久精品国产亚洲AV嘿嘿| 乱论91| 日本123区操B视频| www.色五月| 蜜臀av中字字幕网站| 啊啊啊啊操死我了| 日产成人久久| 日韩欧美传媒一区国产| 色欲久久久久综合网| 国产在线激情视频| 人人透人人操| 91xingse| 自拍亚洲综合| 粉嫩AV一区二区夜夜| 日本操逼视频在线| 国精精品无码一二三区水多多| 第一高清av中文字幕| 超碰久久中文| 中文字幕文字幕无码一区二区三区电影99| 99精品丰满人妻无码| 9Ⅰ超碰| 国模私拍一区二区三区神乳| 国产精品毛片| 97超碰天天爱天天爱| 午夜呻吟欧美| 99.色网| 国产精品 亚洲情色| 97超碰69| 97综合在线观看| 亚洲熟妇丝袜在线观看| ss久久| 人人污日韩一区二区| julia在线观看久久| 色噜噜国产在线| 视频在线观看一二三区| 色噜噜国产在线| 天天看人人操屄犊摸阴| 国产亚洲欧洲在线观看| 国产五码丝袜屁眼| 国产熟女精品区| 嗯嗯啊啊的视频| 亚洲有薄码区久久在线一区| 国产97/欧美| 九九九九九九九九九国产精品| 91性片| a亚洲欧美色欲| 国产精品久久久久久久AV大片| 久久综合国产精品国产| 日韩一级特黄av毛片| 国产亚州精品美女久久久免费| 亚洲最大的综合性av| 久热9| 嗯嗯啊啊操死我| 91草草草| 亚洲中字慕不卡| 91丝袜美女视频| 日本一区二区三区免费观看| 久操网无码在线| 天天天天天干夜夜夜夜夜操| 女优免费一区二区永久| 欧美日日夜夜| 超碰欧美97资源| 国产乱子伦一区二区三区在线观看| 久久国产在线一区二区| 久久国产性爱| 久久人妻视频网| 97视频7| 五月天九九日国产精品一区二区三区| 国产精品一区二区三| 岛国1区2区3区在线观看| 日本精品高清一二区一本到| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 九九碰九九爱97超| 一级片在线观看高清无码| 婷婷伊人网| 96爱综合| 欧美综合色,www| ji熟女.com| 婷婷97| 亚洲精品蜜桃久久久久久久| 久久久精精精| 91c色| 加勒比在线视频| 天天天操天天天爱| 男女啪啪网站免费视频| 丰满人妻一区二区三区大胸懂色 | 亚洲图片激情小说| 久操视频资源站公开| 伊人97色天使| 久久有码视频| 免费看黄视频亚洲网站| 骚货人妻偷情自拍在线视频| 韩国一级婬片A片无码天美| 综合激情五月丁香| 亚洲欲| 网站A V在线| 99热免费| 久久久国产护士丝袜美腿一| 国产9 9在线 | 亚洲| 嗯嗯啊啊视频在线看 | 大香蕉综合网| 亚洲 综合 第一页| 成人一道本免费视频| caorenqi shipin| 91老妇女| 欧美人妻久久精品二区三区| 天天日天天舔东京热| 97在线视频网站| 欧美99热| 欧美天天在线| 国产专区第一页| 久久超碰免费的| 懂色Av| 内射白嫩美女| 男人精品区| 五月天色图| 久久久久久免费电影| 日本操大逼| 午夜啊啊啊| 国产精品嫩草影院午夜两性| 久久极品一区二区| 中文字幕在线免费观看 | 九九亚洲精品| 国产无码精品成人| 伊人青青一区成人视频在线观看区| 国产精品久久泡妞网站| 五月香婷婷| 91N综合网| 五月丁香婷婷啪啪| 四虎在线视频| 大香蕉综合网| 国产馆| 伊人亚洲国产一成人久久精品,久久| 欧美色老汉| 97色婷婷| 亚洲欧美情色| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 九九超碰综合网| 操逼www.| 精吧天堂| JULIA一区二区三区在线播放| 9997se| 天天操天天舔| 欧日韩一二三f区| 色五月婷婷在线| 2017天天拍大香蕉| 国产精品视频电影| 久久久久久久伊人精品| 欧美少妇色综合| 日韩性爱再线视频| 亚洲黄色电影| 老女人日韩美91| 日日操免费视频| 男人把坤坤插入女人的下体| 性爱乱伦网址| 啊啊啊啊好疼| 日本精品88888888| 777AV电影| 亚洲久久天堂| 色av中文字| av网站在线观看了| 激情文学小说一区二区| 大香蕉AV在线| 亚洲97成人在线观看| 欧洲精品欧洲精品| 久/久精品99看9| 日韩日本欧美在线观看| 黄呦呦在线| 偷窥自拍亚洲天堂网爆| 亚洲?V高清一区二区三区尤物| 青青草手机在线免费观看| 无码免费精品高清| 久久久久久久9| 九九九久久久久| 精品久久99| 日本三级A片网站com| 亚洲美腿丝袜香蕉影视欧美成人| 97超碰国产精品| 人妻 丝袜美腿 中文字幕| 日韩精品午夜操呦呦不卡影院| 很黄很污的免费网站| 8050无码八戒| 日本一级特级毛片视频| 人妻无码视频一区二区三区久久| 五月婷丁香| 欧美极品性爱天天射| 综合久久2017| 日日碰视频网| 久久久99久9| 午夜男人一级A片7777| 在线观看不卡一区二区三区| 加勒比综合在线| 60秒免费小视频| 91国产精品熟女| 久久久久久AⅤ无码免费肉站| 成人性爱免费播放| 91天美免费| 91性| 人妻插插人妻人| 狠狠操天天干| 99久久久er直播网址| 国产女同在线观看视频| 久久线上视频免费看| 亚洲国内精品成人不卡| 欧美人妻二区三区| 97色婷婷| 欧美精品自慰系列寂寞少妇| 91人妻精华帖| 亚洲欧美一区二区网址| 超碰久超碰久| 91激情国产| s片在线观看| 蜜臀久久在线视频| 欧美熟妇乱码在线一区| 亚码激情| 婷婷久久久| a在线视频免费观看| 亚州操逼图| 日韩国产不卡在线视频| 欧美18老人禁| 尤物网站91| 青青草中文字幕| 大香蕉伊人75| 色路综合| 肥佬影院91| 欧美性性性| 亚洲Av诱惑| 快灬快灬 一下爽蜜桃在线观看| 9997se| 四季av一区二区凹凸精品小说| 韩国国产欧美情侣视频在线| 国产熟妇一区二区| 国产精品色哟哟| 国产小炒后入式| 青草香蕉网| 嗯嗯啊好大| 亚洲大胆人体av| 97精品97久久| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 精久久久| 久久久三区二区一区| 亚洲久久天堂| 久久这里只| 老女人综合网| 看免费一级在线播放毛片| 日熟女| 日韩无码三级影院| 国产91精品福利在线| 在线观看色视频| 第一高清av中文字幕| 久久婷五月| 啊a一区在线| 在线97在线|