Selenium 自动化测试与 Web 爬虫

精选 Selenium 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。 本备忘单为 Selenium 初学者提供速成指南,帮助快速理解和掌握 Selenium WebDriver 自动化测试的核心 API。

#🚀 入门指引

#初始化浏览器驱动 (Initialize Drivers)

浏览器 代码语法
Chrome WebDriver driver = new ChromeDriver();
Edge WebDriver driver = new EdgeDriver();
Firefox WebDriver driver = new FirefoxDriver();
Safari WebDriver driver = new SafariDriver();

#Selenium 元素定位器 (Locators)

定位器类型 代码语法
className driver.findElement(By.className (“key”))
cssSelector driver.findElement(By.cssSelector(key"))
id driver.findElement(By.id(key"))
linkText driver.findElement(By.linkText(key"))
name driver.findElement(By.name(“key"))
partialLinkText driver.findElement(By.partialLinkText(“key"))
tagName driver.findElement(By.tagName (“key”))
xpath driver.findElement(By.xpath(“key"))

#打开指定 URL

driver.get("https://www.example.com");

#关闭所有浏览器窗口退出

driver.quit();

#关闭当前激活的窗口

driver.close();

#🧭 界面导航 (Navigate)

功能描述 代码语法
跳转至新 URL 网址 driver.navigate().to("https://www.newsite.com");
前进至历史下一页 driver.navigate().forward();
后退至历史上一页 driver.navigate().back();
刷新当前页面 driver.navigate().refresh();

#框架与 iframe 切换 (Frame Handling)

功能描述 代码语法
切换至指定 iframe 框架 driver.switchTo().frame("frameId");
切回最外层主文档内容 driver.switchTo().defaultContent();

#弹窗与 Alert 对话框 (Alerts/Pop-Ups)

Alert alert = driver.switchTo().alert();

// 点击弹窗中的“确定/OK”按钮
alert.accept();

// 点击弹窗中的“取消/Cancel”按钮
alert.dismiss();

// 向弹窗输入框中发送文本内容
alert.sendKeys("text");

// 获取弹窗中的提示文本消息
alert().getText();

#鼠标与键盘高级动作 (Mouse & Keyboard)

Actions actions = new Actions(driver);

// 将鼠标移动至元素中心并执行点击
actions.moveToElement(element).click().build().perform();

// 对指定元素执行双击 (Double Click)
actions.doubleClick(element).perform();

// 将元素从源位置拖拽放置至目标位置
actions.dragAndDrop(source, target).perform();

// 向指定元素发送连续按键文本
actions.sendKeys(element, "text").perform();

#页面元信息获取 (Page Information)

// 获取页面标题 (Title)
driver.getTitle();

// 获取当前页面的 URL 网址
driver.getCurrentUrl();

// 获取整页 HTML 源码内容
driver.getPageSource();

#等待机制 (Waits)

// 显式等待 (Explicit Wait) :- 满足特定条件才继续向下执行
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(element));
// 隐式等待 (Implicit Wait) :- 设置全局查找元素的超时等待时间
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// 流式等待 (Fluent Wait) :- 自定义最大等待超时时间与轮询检测频率
FluentWait wait = new FluentWait(driver);
// 设置最大超时时间为 5 秒
wait.withTimeout(5000, TimeUnit.MILLISECONDS);
// 设置轮询检查间隔为 250 毫秒
wait.pollingEvery(250, TimeUnit.MILLISECONDS);
// 设置忽略的异常类型
wait.ignoring(NoSuchElementException.class)
// 指定等待的条件成立
wait.until(ExpectedConditions.alertIsPresent());