browser-smart-click
è§£å³ Playwright/OpenClaw browser å·¥å ·ç¹å»å ç´ æ¶è¢«å ¶ä»å ç´ é®æ¡å¯¼è´å¤±è´¥çé®é¢ã?
使¶ä½¿ç¨
browser clickæ¥éelement is obscured/intercepted- 页颿?cookie bannerãmodal overlayãfixed header 鮿¡ç®æ å ç´
- éè¦æºè½çå¾ å ç´ å为å¯äº¤äºç¶æ?- éè¦èªå¨å ³éå¼¹çªåéè¯ç¹å»
æ ¸å¿ API
Python å¯¼å ¥
from smart_click import SmartClick, smart_click, wait_for_clickable
smart_click(page, selector, **options) â?ClickResult
ä¸è¡è°ç¨æºè½ç¹å»ï¼
result = await smart_click(page, '#submit-btn')
if result.success:
print("Clicked!")
else:
print(f"Failed: {result.message}")
if result.blocked:
print(f"Blocked by: {result.blocker}")
wait_for_clickable(page, selector, timeout=10000) â?bool
çå¾ å ç´ å¯è§ä¸ä¸è¢«é®æ¡ï¼
clickable = await wait_for_clickable(page, '#btn', timeout=5000)
if clickable:
await page.click('#btn')
SmartClick ç±»ï¼é«çº§ç¨æ³ï¼?
sc = SmartClick(auto_dismiss=True, max_retries=3)
# åºç¡ç¹å»
result = await sc.click(page, '#btn')
# 带éè¯çç¹å»ï¼æ»å?â?JS click åéï¼?result = await sc.click_with_retry(page, '#btn', max_retries=3)
# çå¾
å¯ç¹å?ok = await sc.wait_for_clickable(page, '#btn', timeout=10000)
ClickResult æ ¼å¼
{
"success": true,
"target": {"selector": "#submit-btn", "text": "Submit"},
"blocked": false,
"blocker": null,
"retry_count": 0,
"message": "Clicked successfully"
}
è¢«é®æ¡æ¶ï¼?
{
"success": false,
"target": {"selector": "#submit-btn", "text": "Submit"},
"blocked": true,
"blocker": {
"tag": "div",
"class_name": "cookie-banner",
"text": "We use cookies",
"bounding_box": {"x": 0, "y": 0, "width": 800, "height": 100},
"attributes": {}
},
"retry_count": 1,
"message": "Element blocked by: <div class=\"cookie-banner\"> text=\"We use cookies\""
}
èªå¨å¤ççç¥
| 鮿¡ç±»å | æ£æµæ¹å¼? | å¤ççç¥ |
|---|---|---|
| Cookie Banner | class/id å å« cookie/consent/gdpr | ç¹å» Accept/åæ/å 许 æé® |
| Modal/Dialog | role=dialog æ?class å å« modal/popup | ç¹å» Ã å ³éæé®ï¼ææ?Escape |
| Fixed Header | style å å« position:fixed/sticky | æ»å¨é¡µé¢åéè¯? |
| æªç¥é®æ¡ | elementFromPoint æ£æµ? | æ?Escape åéè¯? |
æä»¶ç»æ
skills/browser-smart-click/
âââ SKILL.md # æ¬æä»?âââ scripts/
â? âââ smart_click.py # æ ¸å¿å®ç°
â? âââ test_smart_click.py # æµè¯ç¨ä¾
âââ references/
âââ usage.md # 详ç»ä½¿ç¨ææ¡£
æµè¯
cd skills/browser-smart-click/scripts
pytest test_smart_click.py -v
ä¸?OpenClaw browser å·¥å ·é å
æ?skill 䏿¿æ?OpenClaw browser å·¥å ·ï¼èæ¯ä½ä¸ºè¡¥å ï¼?
- å
ç¨
browser snapshotè·å页é¢ç¶æ?2. ç?browser act kind=clickå°è¯ç¹å» - å¦æå¤±è´¥ï¼é®æ¡ï¼ï¼å¯¼å
?smart_click å¤çï¼? ```python
from smart_click import smart_click
result = await smart_click(page, '#target')
- æè
å¨ OpenClaw ç?
browser act evaluateä¸ç´æ¥ä½¿ç¨é®æ¡æ£æµ?JS
