webapp-testing
npx skills add https://github.com/tencent/awesome-devbuddy --skill webapp-testing
Agent 安装分布
Skill 文档
Web åºç¨æµè¯
è¦æµè¯æ¬å° Web åºç¨ï¼è¯·ç¼ååçç Python Playwright èæ¬ã
å¯ç¨è¾ å©èæ¬ï¼
scripts/with_server.py– 管çæå¡å¨çå½å¨æï¼æ¯æå¤ä¸ªæå¡å¨ï¼
å¡å¿
å
ä½¿ç¨ --help è¿è¡èæ¬ ä»¥æ¥çç¨æ³ãå¨ä½ å
å°è¯ç´æ¥è¿è¡èæ¬å¹¶ç¡®è®¤å¿
é¡»å®å¶ä¹åï¼ä¸è¦é
读æºç ãè¿äºèæ¬å¯è½é常åºå¤§ï¼ä¼æ±¡æä½ çä¸ä¸æçªå£ãå®ä»¬ç设计ç®çæ¯ä½ä¸ºé»çèæ¬è¢«ç´æ¥è°ç¨ï¼è䏿¯è¢«çº³å
¥ä½ çä¸ä¸æçªå£ã
å³çæ ï¼éæ©ä½ çæ¹æ³
ç¨æ·ä»»å¡ â æ¯éæ HTML åï¼
ââ æ¯ â ç´æ¥è¯»å HTML æä»¶ä»¥è¯å«éæ©å¨
â ââ æå â 使ç¨è¿äºéæ©å¨ç¼å Playwright èæ¬
â ââ 失败/ä¸å®æ´ â æå¨æåºç¨å¤çï¼è§ä¸ï¼
â
ââ å¦ï¼å¨æ Web åºç¨ï¼ â æå¡å¨æ¯å¦å·²å¨è¿è¡ï¼
ââ å¦ â è¿è¡ï¼python scripts/with_server.py --help
â ç¶å使ç¨è¯¥å©æ + ç¼åç²¾ç®ç Playwright èæ¬
â
ââ æ¯ â å
侦å¯ï¼åæä½ï¼
1. 导èªå¹¶çå¾
networkidle
2. æªå¾ææ£æ¥ DOM
3. 仿¸²æç¶æä¸è¯å«éæ©å¨
4. 使ç¨åç°ç鿩卿§è¡æä½
示ä¾ï¼ä½¿ç¨ with_server.py
è¦å¯å¨æå¡å¨ï¼å
è¿è¡ --helpï¼ç¶å使ç¨è¯¥å©æï¼
å个æå¡å¨ï¼
python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py
å¤ä¸ªæå¡å¨ï¼ä¾å¦å端 + å端ï¼ï¼
python scripts/with_server.py \
--server "cd backend && python server.py" --port 3000 \
--server "cd frontend && npm run dev" --port 5173 \
-- python your_automation.py
ç¼åèªå¨åèæ¬æ¶ï¼åªå å« Playwright é»è¾ï¼æå¡å¨ç±å©æèªå¨ç®¡çï¼ï¼
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True) # å§ç»ä»¥æ 头模å¼å¯å¨ chromium
page = browser.new_page()
page.goto('http://localhost:5173') # æå¡å¨å·²è¿è¡ä¸å°±ç»ª
page.wait_for_load_state('networkidle') # å
³é®ï¼çå¾
JS æ§è¡
# ... ä½ çèªå¨åé»è¾
browser.close()
âå 侦å¯ï¼åæä½â模å¼
-
æ£æ¥æ¸²æåç DOMï¼
page.screenshot(path='/tmp/inspect.png', full_page=True) content = page.content() page.locator('button').all() -
æ ¹æ®æ£æ¥ç»æè¯å«éæ©å¨
-
使ç¨åç°ç鿩卿§è¡æä½
常è§é·é±
â å¨å¨æåºç¨ä¸ï¼çå¾
networkidle ä¹åä¸è¦æ£æ¥ DOM
â
卿£æ¥ä¹å请çå¾
page.wait_for_load_state('networkidle')
æä½³å®è·µ
- å°æç»èæ¬ä½ä¸ºé»çä½¿ç¨ – å¤ç任塿¶ï¼èè
scripts/䏿¯å¦å·²æèæ¬å¯ç¨ãè¿äºèæ¬å¯ä»¥å¯é å°å¤ç常è§ä¸å¤æç工使µï¼åæ¶ä¸æ±¡æä½ çä¸ä¸æçªå£ã使ç¨--helpæ¥çç¨æ³ï¼ç¶åç´æ¥è°ç¨ã - å¯¹åæ¥èæ¬ä½¿ç¨
sync_playwright() - 宿åå¡å¿ å ³éæµè§å¨
- ä½¿ç¨æè¿°æ§éæ©å¨ï¼
text=ãrole=ãCSS 鿩卿 ID - æ·»å éå½ççå¾
ï¼
page.wait_for_selector()æpage.wait_for_timeout()
åèæä»¶
- examples/ – å±ç¤ºå¸¸è§æ¨¡å¼ç示ä¾ï¼
element_discovery.py– åç°é¡µé¢ä¸çæé®ã龿¥åè¾å ¥æ¡static_html_automation.py– ä½¿ç¨ file:// URL æä½æ¬å° HTMLconsole_logging.py– å¨èªå¨åè¿ç¨ä¸æè·æ§å¶å°æ¥å¿