用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/diegosouzapw/awesome-omni-skill --skill selenium-testing命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | selenium-testing |
| description | Browser automation with Selenium WebDriver for Python. (project) |
For Skriptoteket-specific login/env conventions, follow:
.agent/rules/075-browser-automation.mdpdm run python -m scripts.<module>
import os
from pathlib import Path
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def _read_dotenv(path: Path) -> dict[str, str]:
if not path.exists():
return {}
values: dict[str, str] = {}
for line in path.read_text(encoding="utf-8").splitlines():
stripped = line.strip()
if not stripped or stripped.startswith("#") or "=" not in stripped:
continue
key, value = stripped.split("=", 1)
values[key.strip()] = value.strip()
return values
dotenv = _read_dotenv(Path(os.environ.get("DOTENV_PATH", ".env")))
def _get_config_value(*, key: str, default: str | None = None) -> str | None:
return os.environ.get(key) or dotenv.get(key) or default
base_url = _get_config_value(key="BASE_URL", default="http://127.0.0.1:8000") or "http://127.0.0.1:8000"
email = _get_config_value(key="PLAYWRIGHT_EMAIL") or _get_config_value(key="BOOTSTRAP_SUPERUSER_EMAIL")
password = _get_config_value(key="PLAYWRIGHT_PASSWORD") or _get_config_value(
key="BOOTSTRAP_SUPERUSER_PASSWORD"
)
if not email or not password:
raise SystemExit(
"Missing credentials. Either set PLAYWRIGHT_EMAIL/PLAYWRIGHT_PASSWORD (recommended for prod) "
"or BOOTSTRAP_SUPERUSER_EMAIL/BOOTSTRAP_SUPERUSER_PASSWORD (dev). "
"Provide them in DOTENV_PATH (default: .env) or export them in your shell."
)
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
driver.set_window_size(1440, 900)
# Login
driver.get(f"{base_url}/login")
driver.find_element(By.NAME, "email").send_keys(email)
driver.find_element(By.NAME, "password").send_keys(password)
driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click()
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//*[contains(., 'Inloggad som')]")))
# Screenshot
Path(".artifacts").mkdir(parents=True, exist_ok=True)
driver.get(f"{base_url}/admin/tools")
driver.save_screenshot(".artifacts/selenium-admin-tools.png")
driver.quit()
Use explicit WebDriverWait with EC.url_contains() instead of implicit waits.
Use mcp__context7__get-library-docs with /seleniumhq/selenium for API details.