2026/5/20 14:38:45
网站建设
项目流程
怎么做签到网站,腾讯云 安装 wordpress,单位邮箱一般用什么邮箱,最好用的磁力搜索神器以下是 Python Selenium 超详细新手教程#xff08;2026 年最新版#xff09;#xff1a;从零开始掌握浏览器自动化。
这份教程基于 Selenium 4.40#xff08;2026 年 1 月最新稳定版#xff09;和 Python 3.12/3.13#xff0c;重点解决新手最痛的几个问题#xff1a;…以下是Python Selenium 超详细新手教程2026 年最新版从零开始掌握浏览器自动化。这份教程基于Selenium 4.402026 年 1 月最新稳定版和Python 3.12/3.13重点解决新手最痛的几个问题驱动安装不再手动下载Selenium Manager 自动搞定headless / 无头模式 / 绕过检测常见元素定位、等待、交互、异常处理真实项目场景示例登录、爬取、表单填写、截图等0. 为什么 2026 年还在学 Selenium动态 JS 页面、复杂交互、文件上传、验证码绕过等场景Playwright / Puppeteer虽快但 Selenium 生态最成熟、职位最多、云测试平台支持最好。Selenium Manager4.6 内置让安装难度大幅降低新手友好度暴涨。1. 环境准备5 分钟搞定步骤 1安装 Selenium包含 Selenium Managerpipinstall--upgrade selenium# 推荐额外安装方便调试、等待、日志pipinstallwebdriver-manager# 可选Selenium Manager 已够用但有时更稳定步骤 2验证安装fromseleniumimportwebdriverprint(webdriver.__version__)# 应该 ≥ 4.40.02026 年关键变化Selenium 4.6内置 Selenium ManagerRust 实现自动下载匹配你浏览器版本的 chromedriver/geckodriver/msedgedriver 等。不再需要手动去 chromedriver.chromium.org 下载驱动也不用放 PATH。2. 第一个程序打开浏览器 访问页面fromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptions# ------------------- 方式一最简单推荐新手 -------------------driverwebdriver.Chrome()# 自动使用 Selenium Manager 下载驱动driver.get(https://www.python.org)print(driver.title)# Python.org 标题driver.quit()# 必须关闭否则进程残留方式二无头模式headless——后台运行不弹出窗口optionsOptions()options.add_argument(--headlessnew)# 现代无头模式Chrome 109 推荐options.add_argument(--disable-gpu)# 部分系统需要options.add_argument(--no-sandbox)# Linux / Docker 常见options.add_argument(--disable-dev-shm-usage)driverwebdriver.Chrome(optionsoptions)driver.get(https://www.google.com)print(driver.page_source[:200])# 输出部分 HTMLdriver.quit()方式三加一些防检测参数爬虫/防反爬常用optionsOptions()options.add_argument(--headlessnew)options.add_argument(user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36)options.add_experimental_option(excludeSwitches,[enable-automation])options.add_experimental_option(useAutomationExtension,False)driverwebdriver.Chrome(optionsoptions)3. 核心概念元素定位8 大主流方式定位方式语法示例适用场景优先级建议idfind_element(By.ID, “kw”)最高优先唯一性强★★★★★namefind_element(By.NAME, “wd”)表单 input name★★★★☆class namefind_element(By.CLASS_NAME, “s_ipt”)单个 class★★★☆☆tag namefind_elements(By.TAG_NAME, “a”)找所有链接/按钮★★☆☆☆link textfind_element(By.LINK_TEXT, “新闻”)精确匹配超链接文字★★★☆☆partial link textfind_element(By.PARTIAL_LINK_TEXT, “新”)模糊匹配链接文字★★☆☆☆css selectorfind_element(By.CSS_SELECTOR, “#kw”).s_iptinput[type‘text’]最强大、最快、推荐掌握★★★★★xpathfind_element(By.XPATH, “//*[id‘kw’]”)//input[name‘wd’]最灵活但慢、易碎★★★★☆推荐顺序2026 年最佳实践ID name css xpath最后用 class link text代码示例百度搜索fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.common.keysimportKeysimporttime driverwebdriver.Chrome()driver.get(https://www.baidu.com)# 定位搜索框多种写法等价search_boxdriver.find_element(By.ID,kw)# search_box driver.find_element(By.NAME, wd)# search_box driver.find_element(By.CSS_SELECTOR, #kw)# search_box driver.find_element(By.XPATH, //input[idkw])search_box.clear()# 清空search_box.send_keys(Python Selenium 教程)search_box.send_keys(Keys.ENTER)# 回车搜索time.sleep(3)# 粗暴等待后面学智能等待print(driver.title)driver.quit()4. 必须掌握显式等待WebDriverWait——避免 sleep 地狱fromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC waitWebDriverWait(driver,timeout10,poll_frequency0.5)# 每0.5秒检查一次最多等10秒# 等待元素可见wait.until(EC.visibility_of_element_located((By.ID,result_logo)))# 等待元素可点击wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,.btn.btn-primary)))# 等待标题包含某文字wait.until(EC.title_contains(Python))常用 ECexpected_conditionsvisibility_of_element_locatedpresence_of_element_located在 DOM 中即可不必可见element_to_be_clickabletext_to_be_present_in_elementtitle_is / title_containsstaleness_of元素消失5. 常见交互操作汇总elementdriver.find_element(By.ID,su)element.click()# 点击element.send_keys(输入内容)# 输入element.clear()# 清空输入框element.get_attribute(value)# 获取 value 属性element.text# 获取显示文本element.is_displayed()# 是否可见element.is_enabled()# 是否可用element.is_selected()# radio/checkbox 是否选中# 浏览器操作driver.back()driver.forward()driver.refresh()driver.maximize_window()driver.set_window_size(1200,800)driver.save_screenshot(baidu.png)# 截图6. 窗口/iframe/警报处理# 切换窗口多标签handlesdriver.window_handles driver.switch_to.window(handles[1])# 切换到第二个标签# 切换 iframedriver.switch_to.frame(iframe_id_or_name_or_element)driver.switch_to.default_content()# 切回主文档# 处理 alert/confirm/promptalertdriver.switch_to.alert alert.accept()# 确认alert.dismiss()# 取消alert.text# 获取弹窗文字alert.send_keys(输入)# prompt 输入7. 真实项目小实战自动登录某网站伪代码driverwebdriver.Chrome()waitWebDriverWait(driver,15)driver.get(https://example.com/login)wait.until(EC.presence_of_element_located((By.NAME,username))).send_keys(your_account)driver.find_element(By.NAME,password).send_keys(your_pass)driver.find_element(By.CSS_SELECTOR,button[typesubmit]).click()# 等待登录成功例如个人中心元素出现wait.until(EC.presence_of_element_located((By.CLASS_NAME,user-avatar)))print(登录成功)driver.save_screenshot(login_success.png)8. 常见报错 解决方案2026 年高频错误原因 解决办法NoSuchDriverException浏览器版本与驱动不匹配 → 升级 selenium 或用 webdriver-manager 强制更新ElementNotInteractableException元素被遮挡/不可见 → 加等待 scrollIntoView 或 ActionChains 移动鼠标StaleElementReferenceException页面刷新后元素失效 → 重新定位元素不要缓存 elementTimeoutException等待超时 → 延长 timeout 或检查 locator 是否正确SessionNotCreatedException驱动版本错 → Selenium Manager 自动处理若失败options.add_argument(“–headlessnew”)undetected-chromedriver 检测网站强反爬 → 用 undetected-chromedriver 库pip install undetected-chromedriver9. 进阶方向建议学完基础后Page Object ModelPOM设计模式pytest selenium 集成推荐测试框架处理验证码OCR / 人工打码平台多线程/分布式selenium-grid结合 Playwright 迁移未来趋势headless proxy user-agent 随机 → 爬虫防封一句话总结2026 年 Selenium 安装几乎零成本Selenium Manager 功不可没学会显式等待 CSS 定位 POM你就基本能应对 90% 的浏览器自动化需求。有哪部分还想再细讲例如如何处理滑块验证码POM 完整项目模板headless 绕过 Cloudflare / Akamaipytest allure 报告随时告诉我我继续展开