architecture skill created
This commit is contained in:
parent
77cd8e04b0
commit
566dc54610
8 changed files with 574 additions and 2 deletions
27
references/common_patterns.md
Normal file
27
references/common_patterns.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
---
|
||||
|
||||
## 📚 Файл: references/common_patterns.md
|
||||
|
||||
```markdown
|
||||
# Common Browser Automation Patterns
|
||||
|
||||
## Паттерн 1: Авторизация
|
||||
|
||||
### Сценарий
|
||||
Пользователь хочет автоматизировать вход в систему.
|
||||
|
||||
### Реализация
|
||||
```python
|
||||
{
|
||||
"action": "sequence",
|
||||
"steps": [
|
||||
{"action": "goto", "url": "https://example.com/login"},
|
||||
{"action": "wait", "selector": "form", "timeout": 5000},
|
||||
{"action": "fill", "selector": "input[name='email']", "value": "user@example.com"},
|
||||
{"action": "fill", "selector": "input[name='password']", "value": "password123"},
|
||||
{"action": "click", "selector": "button[type='submit']"},
|
||||
{"action": "wait", "selector": ".dashboard", "timeout": 10000},
|
||||
{"action": "screenshot", "path": "/tmp/after_login.png"}
|
||||
]
|
||||
}
|
||||
52
references/selectors.md
Normal file
52
references/selectors.md
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# CSS Селекторы — Полная шпаргалка
|
||||
|
||||
## Быстрый справочник
|
||||
|
||||
### Базовые селекторы
|
||||
|
||||
| Селектор | Пример | Описание |
|
||||
|----------|--------|----------|
|
||||
| `*` | `*` | Все элементы |
|
||||
| `element` | `div` | Элемент по тегу |
|
||||
| `#id` | `#main` | Элемент по ID |
|
||||
| `.class` | `.button` | Элемент по классу |
|
||||
| `[attr]` | `[disabled]` | Элемент с атрибутом |
|
||||
| `[attr=value]` | `[type="submit"]` | Точное совпадение атрибута |
|
||||
| `[attr^=value]` | `[href^="https"]` | Атрибут начинается с |
|
||||
| `[attr$=value]` | `[href$=".pdf"]` | Атрибут заканчивается на |
|
||||
| `[attr*=value]` | `[name*="user"]` | Атрибут содержит |
|
||||
|
||||
### Комбинаторы
|
||||
|
||||
| Селектор | Пример | Описание |
|
||||
|----------|--------|----------|
|
||||
| `A B` | `div p` | Потомок (любой уровень) |
|
||||
| `A > B` | `div > p` | Прямой потомок |
|
||||
| `A + B` | `h1 + p` | Соседний элемент |
|
||||
| `A ~ B` | `h1 ~ p` | Все следующие соседние |
|
||||
|
||||
### Псевдоклассы
|
||||
|
||||
| Псевдокласс | Пример | Описание |
|
||||
|-------------|--------|----------|
|
||||
| `:first-child` | `li:first-child` | Первый дочерний |
|
||||
| `:last-child` | `li:last-child` | Последний дочерний |
|
||||
| `:nth-child(n)` | `tr:nth-child(2)` | n-й дочерний |
|
||||
| `:nth-of-type(n)` | `p:nth-of-type(2)` | n-й элемент типа |
|
||||
| `:not(selector)` | `div:not(.hidden)` | Исключение |
|
||||
| `:has(selector)` | `div:has(p)` | Содержит дочерний элемент |
|
||||
| `:contains(text)` | `a:contains("Click")` | Содержит текст |
|
||||
|
||||
## XPath — Альтернатива
|
||||
|
||||
### Базовые XPath
|
||||
|
||||
```xpath
|
||||
//element # Все элементы
|
||||
//div[@id='main'] # По атрибуту
|
||||
//div[contains(@class, 'btn')] # Частичное совпадение класса
|
||||
//button[text()='Submit'] # По тексту
|
||||
//a[contains(text(), 'Learn')] # Частичное совпадение текста
|
||||
//div[@id='main']//p # Вложенность
|
||||
//div[1] # Первый div
|
||||
//div[last()] # Последний div
|
||||
Loading…
Add table
Add a link
Reference in a new issue