🌐 Selenium 入门教程
Selenium 是一个强大的浏览器自动化工具,可以模拟用户在网页上的各种操作,常用于自动化测试、网页抓取等任务。
✅ Selenium 能解决什么问题?
| 用途 | 示例场景 |
|---|---|
| 自动化测试 | 自动点击、表单提交、页面跳转等测试 |
| 动态网页抓取 | 抓取 JavaScript 渲染后的数据 |
| 自动登录 | 模拟用户输入用户名、密码并登录 |
| 模拟行为 | 滑动页面、截图、鼠标操作等 |
💡 安装 Selenium 和驱动
pip install selenium
你还需要浏览器驱动(如 ChromeDriver),需与浏览器版本匹配:https://chromedriver.chromium.org/downloads
🛠 基本使用
1️⃣ 打开网页并操作元素
从 selenium 导入 webdriver
浏览器 = webdriver.Chrome()
浏览器.获取("[https://www.example.com](https://www.example.com)")
输入框 = 浏览器.查找元素("名称", "q")
输入框.发送键("Python Selenium")
输入框.提交()
2️⃣ 查找页面元素
元素 = 浏览器.查找元素("id", "my-id")
元素2 = 浏览器.查找元素("类名称", "class-name")
元素组 = 浏览器.查找元素们("标签名称", "a")
3️⃣ 等待元素加载
从 selenium.webdriver.common.by 导入 By
从 selenium.webdriver.support.ui 导入 WebDriverWait
从 selenium.webdriver.support 导入 expected_conditions 作为 EC
等待器 = WebDriverWait(浏览器, 10)
元素 = 等待器.直到(EC.存在元素定位((By.ID, "my-id")))
4️⃣ 页面交互
按钮 = 浏览器.查找元素("id", "submit")
按钮.点击()
输入框 = 浏览器.查找元素("名称", "username")
输入框.清除()
输入框.发送键("admin")
5️⃣ 模拟滚动与截图
浏览器.执行脚本("window.scrollTo(0, document.body.scrollHeight);")
浏览器.保存屏幕截图("screenshot.png")
6️⃣ 关闭浏览器
浏览器.关闭() # 关闭当前标签页
浏览器.退出() # 关闭整个浏览器
🔐 示例:自动登录网站
浏览器.获取("https://example.com/login")
用户框 = 浏览器.查找元素("id", "username")
密码框 = 浏览器.查找元素("id", "password")
用户框.发送键("myuser")
密码框.发送键("mypassword")
浏览器.查找元素("id", "login-btn").点击()
🧱 常用查找方式(find_element)
| 查找方式 | 参数名称 | 示例 |
|---|---|---|
id | "id" | ("id", "main") |
name | "name" | ("name", "username") |
class name | "class name" | ("class name", "btn") |
tag name | "tag name" | ("tag name", "a") |
link text | "link text" | ("link text", "首页") |
css selector | "css selector" | ("css selector", "#login") |
xpath | "xpath" | ("xpath", "//input[@id='a']) |
✅ Selenium 总结
| 功能 | 方法/操作 |
|---|---|
| 打开网页 | browser.get(url) |
| 查找元素 | find_element(), find_elements() |
| 模拟操作 | click(), send_keys() |
| 等待元素 | WebDriverWait, expected_conditions |
| 滚动、截图 | execute_script(), save_screenshot() |
| 浏览器控制 | close(), quit() |