webapp-testing
npx skills add https://github.com/lingxling/awesome-skills-cn --skill webapp-testing
Agent 安装分布
Skill 文档
Web åºç¨ç¨åºæµè¯
è¦æµè¯æ¬å°Webåºç¨ç¨åºï¼ç¼ååçPython Playwrightèæ¬ã
å¯ç¨çè¾ å©èæ¬ï¼
scripts/with_server.py– 管çæå¡å¨çå½å¨æï¼æ¯æå¤ä¸ªæå¡å¨ï¼
å§ç»å
使ç¨--helpè¿è¡èæ¬ä»¥æ¥çç¨æ³ãä¸è¦å¨å
å°è¯è¿è¡èæ¬å¹¶åç°èªå®ä¹è§£å³æ¹æ¡ç»å¯¹å¿
è¦ä¹åé
读æºä»£ç ãè¿äºèæ¬å¯è½é常大ï¼å æ¤ä¼æ±¡æä½ çä¸ä¸æçªå£ãå®ä»¬çå卿¯ä½ä¸ºé»çèæ¬ç´æ¥è°ç¨ï¼è䏿¯è¢«æå
¥å°ä½ çä¸ä¸æçªå£ä¸ã
å³çæ ï¼éæ©ä½ çæ¹æ³
ç¨æ·ä»»å¡ â æ¯éæHTMLåï¼
ââ æ¯ â ç´æ¥è¯»åHTMLæä»¶ä»¥è¯å«éæ©å¨
â ââ æå â 使ç¨éæ©å¨ç¼åPlaywrightèæ¬
â ââ 失败/ä¸å®æ´ â è§ä¸ºå¨æï¼è§ä¸æï¼
â
ââ å¦ï¼å¨æwebappï¼â æå¡å¨å·²å¨è¿è¡åï¼
ââ å¦ â è¿è¡ï¼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– 对æ¬å°HTML使ç¨file:// URLconsole_logging.py– å¨èªå¨åæé´æè·æ§å¶å°æ¥å¿