如果你做Web 自动化、爬虫、UI 测试、面试Selenium 绕不开。这篇博客不讲零散 API只讲体系化、工程化、能直接上班用的 Selenium 全貌。一、Selenium 到底是什么核心定位一句话Selenium 浏览器自动化框架之王控制真实浏览器Chrome/Firefox/Edge/Safari模拟人点点点输入、点击、滚动、弹窗、切换窗口跨语言Python / Java / JS / C#跨系统Windows / Mac / Linux跨浏览器一套脚本跑全浏览器用途Web UI 自动化测试主业简单网页爬虫动态渲染 JS批量操作后台、数据导出、表单自动提交面试必考自动化基础、等待机制、元素定位二、底层架构为什么重要看懂才不踩坑1. 经典三层脚本 → WebDriver协议 → 浏览器驱动 → 浏览器不是直接操控浏览器靠HTTP JSON 协议通信→ 所以有延迟、有超时、有稳定性问题2. 版本迭代变化你必须知道Selenium 3依赖 ChromeDriver 单独下载Selenium 4自带自动管理驱动 W3C 标准现在写代码省心很多不用折腾环境。三、最快上手Python 极简可运行示例pip install selenium入门脚本打开网页 搜索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://www.baidu.com) # 显式等待 10秒稳定性关键 search_box WebDriverWait(driver,10).until( EC.presence_of_element_located((By.ID, kw)) ) search_box.send_keys(selenium 博客) driver.find_element(By.ID, su).click() driver.quit()新手只要记住三件事打开浏览器webdriver.Chrome ()找元素By.ID/ By.XPATH等元素WebDriverWait稳定核心四、元素定位面试 实战重中之重优先级推荐顺序越前越稳ID最快最稳Name / ClassNameCSS Selector工程首选、速度快、简洁XPath万能、但慢、脆弱By.ID, username By.CSS_SELECTOR, input[namephone] By.XPATH, //div[contains(text(),登录)]经验总结能 CSS 不用 XPath能绝对不用相对尽量靠属性不靠文本改版必崩五、等待机制决定你脚本稳不稳的灵魂三种等待面试高频强制等待time.sleep(2) # 垃圾工程禁止隐式等待全局driver.implicitly_wait(8)显式等待企业标准、强烈推荐WebDriverWait(driver,10).until(EC.visibility_of_element_located(...))一句话总结稳定脚本 全程显式等待杜绝 sleep。六、企业级进阶功能工作一定会遇到1. 无头模式后台跑、速度快options.add_argument(--headlessnew)2. 反检测防爬虫拦截options.add_experimental_option(excludeSwitches, [enable-automation]) options.add_argument(--disable-blink-featuresAutomationControlled)3. 窗口切换 /iframe 切换切 tabdriver.switch_to.window ()切内嵌页面driver.switch_to.frame ()新手最容易找不到元素的元凶4. 弹窗处理alert / confirm → driver.switch_to.alert.accept()5. JS 执行万能救场元素点不动用 JSdriver.execute_script(arguments[0].click();, element)七、工程化架构从玩具变成项目真实公司不会写一堆平铺代码都会用POM 模式Page 层封装元素、动作Case 层只写业务逻辑Data 层数据分离yaml/jsonReport 层allure 测试报告好处UI 变了只改一页可读性高可复用、可维护、适合团队协作目录结构示范pages/ login_page.py cases/ test_login.py data/ login_data.yaml config/ browser.py八、高频坑点合集踩过才算入门元素找不到没等加载好在 iframe 里窗口没切过去脚本时而好时而坏少显式等待、依赖网络浏览器自动关闭驱动版本不匹配被网站识别拦截缺反爬虫参数运行太慢开可视化、没无头、太多 sleep九、Selenium vs Appium 一句话区分面试常问Selenium→ Web 网页自动化驱动浏览器Appium→ App 自动化驱动手机底层同源都是 WebDriver 协议、元素定位逻辑几乎一样学会一个另一个上手极快。十、博客结语你应该怎么学最快学习路线极简高效学会环境 基础 8 个 API吃透等待 定位两大核心搞定 iframe / 弹窗 / 多窗口搭 POM 工程模板接入 CI、报告、无头模式 → 直接对标企业水平
Selenium 深度博客|2026 全站视角:原理、实战、避坑、企业落地一条龙
发布时间:2026/6/5 21:16:49
如果你做Web 自动化、爬虫、UI 测试、面试Selenium 绕不开。这篇博客不讲零散 API只讲体系化、工程化、能直接上班用的 Selenium 全貌。一、Selenium 到底是什么核心定位一句话Selenium 浏览器自动化框架之王控制真实浏览器Chrome/Firefox/Edge/Safari模拟人点点点输入、点击、滚动、弹窗、切换窗口跨语言Python / Java / JS / C#跨系统Windows / Mac / Linux跨浏览器一套脚本跑全浏览器用途Web UI 自动化测试主业简单网页爬虫动态渲染 JS批量操作后台、数据导出、表单自动提交面试必考自动化基础、等待机制、元素定位二、底层架构为什么重要看懂才不踩坑1. 经典三层脚本 → WebDriver协议 → 浏览器驱动 → 浏览器不是直接操控浏览器靠HTTP JSON 协议通信→ 所以有延迟、有超时、有稳定性问题2. 版本迭代变化你必须知道Selenium 3依赖 ChromeDriver 单独下载Selenium 4自带自动管理驱动 W3C 标准现在写代码省心很多不用折腾环境。三、最快上手Python 极简可运行示例pip install selenium入门脚本打开网页 搜索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://www.baidu.com) # 显式等待 10秒稳定性关键 search_box WebDriverWait(driver,10).until( EC.presence_of_element_located((By.ID, kw)) ) search_box.send_keys(selenium 博客) driver.find_element(By.ID, su).click() driver.quit()新手只要记住三件事打开浏览器webdriver.Chrome ()找元素By.ID/ By.XPATH等元素WebDriverWait稳定核心四、元素定位面试 实战重中之重优先级推荐顺序越前越稳ID最快最稳Name / ClassNameCSS Selector工程首选、速度快、简洁XPath万能、但慢、脆弱By.ID, username By.CSS_SELECTOR, input[namephone] By.XPATH, //div[contains(text(),登录)]经验总结能 CSS 不用 XPath能绝对不用相对尽量靠属性不靠文本改版必崩五、等待机制决定你脚本稳不稳的灵魂三种等待面试高频强制等待time.sleep(2) # 垃圾工程禁止隐式等待全局driver.implicitly_wait(8)显式等待企业标准、强烈推荐WebDriverWait(driver,10).until(EC.visibility_of_element_located(...))一句话总结稳定脚本 全程显式等待杜绝 sleep。六、企业级进阶功能工作一定会遇到1. 无头模式后台跑、速度快options.add_argument(--headlessnew)2. 反检测防爬虫拦截options.add_experimental_option(excludeSwitches, [enable-automation]) options.add_argument(--disable-blink-featuresAutomationControlled)3. 窗口切换 /iframe 切换切 tabdriver.switch_to.window ()切内嵌页面driver.switch_to.frame ()新手最容易找不到元素的元凶4. 弹窗处理alert / confirm → driver.switch_to.alert.accept()5. JS 执行万能救场元素点不动用 JSdriver.execute_script(arguments[0].click();, element)七、工程化架构从玩具变成项目真实公司不会写一堆平铺代码都会用POM 模式Page 层封装元素、动作Case 层只写业务逻辑Data 层数据分离yaml/jsonReport 层allure 测试报告好处UI 变了只改一页可读性高可复用、可维护、适合团队协作目录结构示范pages/ login_page.py cases/ test_login.py data/ login_data.yaml config/ browser.py八、高频坑点合集踩过才算入门元素找不到没等加载好在 iframe 里窗口没切过去脚本时而好时而坏少显式等待、依赖网络浏览器自动关闭驱动版本不匹配被网站识别拦截缺反爬虫参数运行太慢开可视化、没无头、太多 sleep九、Selenium vs Appium 一句话区分面试常问Selenium→ Web 网页自动化驱动浏览器Appium→ App 自动化驱动手机底层同源都是 WebDriver 协议、元素定位逻辑几乎一样学会一个另一个上手极快。十、博客结语你应该怎么学最快学习路线极简高效学会环境 基础 8 个 API吃透等待 定位两大核心搞定 iframe / 弹窗 / 多窗口搭 POM 工程模板接入 CI、报告、无头模式 → 直接对标企业水平