mcpField
S
selenium

selenium

github.com/partme-ai测试与质量71887 次安装4 周前更新
代码仓库

关于 selenium

用于编写和维护 Selenium WebDriver 浏览器自动化测试的技能,涵盖元素定位、等待机制、无头执行、多浏览器测试与 CI 流程。

主要功能

  1. 01WebDriver 测试脚本编写
  2. 02CSS、ID 和相对定位器
  3. 03显式等待指导
  4. 04无头模式与 Grid 执行
  5. 05CI/CD 测试流程指导

适用场景

  1. 01自动化浏览器测试
  2. 02用显式等待减少测试不稳定
  3. 03在 CI 或 Selenium Grid 中运行测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/partme-ai/full-stack-skills --skill selenium

安装后在 Claude Code 中输入/selenium确认已加载。

附带文件LICENSE.txt

详细介绍

适用场景

当用户希望进行以下操作时,使用此技能:

  • 使用 Selenium WebDriver 编写或维护浏览器自动化测试
  • 使用 CSS 选择器、ID 或相对定位器查找元素
  • 实现显式等待和隐式等待,确保测试稳定运行
  • 在无头模式下运行测试,或通过 Selenium Grid 跨浏览器运行测试
  • 将 Selenium 测试集成到 CI/CD 流水线中

如何使用此技能

工作流
  1. 设置环境:安装浏览器驱动(ChromeDriver/GeckoDriver),或使用 Selenium 4 Manager
  2. 编写测试脚本:导航、查找元素、交互并断言
  3. 添加等待和错误处理:使用显式等待,而不是 sleep
  4. 在 CI 中运行:配置无头模式或 Grid;生成报告
1. 基本测试(Python)
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

driver = webdriver.Chrome()
driver.get("https://example.com/login")

# Explicit wait for element
wait = WebDriverWait(driver, 10)
username = wait.until(EC.presence_of_element_located((By.ID, "username")))
username.send_keys("testuser")

driver.find_element(By.ID, "password").send_keys("secret")
driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click()

# Assert login success
assert "Dashboard" in driver.title

driver.quit()
2. 基本测试(Java)
WebDriver driver = new ChromeDriver();
driver.get("https://example.com/login");

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement username = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("username")));
username.sendKeys("testuser");

driver.findElement(By.id("password")).sendKeys("secret");
driver.findElement(By.cssSelector("button[type='submit']")).click();

assertTrue(driver.getTitle().contains("Dashboard"));
driver.quit();
3. 无头模式
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
options.add_argument("--no-sandbox")
driver = webdriver.Chrome(options=options)

最佳实践

  • 使用显式等待(WebDriverWait),而不是 time.sleep,以确保测试可靠
  • 优先使用 ID、CSS 选择器或相对定位器,而不是脆弱的 XPath 表达式
  • 保持测试用例独立且可重复;失败时截取屏幕截图
  • 将敏感数据(URL、凭据)存储在配置文件或环境变量中
  • 使用 Selenium Grid 并行执行;确保浏览器和驱动版本匹配

资源

关键词

selenium, WebDriver, 浏览器自动化, E2E, 端到端测试, 无头, Selenium Grid, ChromeDriver, 显式等待, CSS 选择器

评论

支持 Markdown