Selenium基本使用指南
文章目录
- Selenium自动化测试入门:从零开始玩转Web自动化
- 一、什么是Selenium?
- 二、 环境搭建
- 1. 安装Python
- 2. 安装Selenium
- 3. 下载浏览器驱动
- 4. 编写Selenium程序
- 三、元素定位大法
- 1. 通过ID定位
- 2. 通过类名定位
- 3. 通过标签名定位
- 4. 通过CSS选择器定位
- 5. 通过XPath定位
- 四、常用操作
- 1. 点击操作
- 2. 输入操作
- 3. 获取元素信息
- 4. 等待机制
- 4.1 强制等待(不推荐)
- 4.2 显式等待(推荐)
- 4.3 隐式等待
- 4.4 自动登录
- 五、常见问题解决
- 1. 元素找不到
- 2. 页面加载太慢
- 3. 元素不可点击
- 六、高级技巧
- 1. 处理弹窗
- 2. 切换窗口
- 3. 滚动页面
- 七、总结
Selenium自动化测试入门:从零开始玩转Web自动化
💡💡💡大家好!今天来聊聊Selenium这个神器,相信很多做测试或者爬虫的朋友都不陌生。不过对于刚入门的小伙伴来说,Selenium可能还有点神秘。别担心,今天我就用最接地气的方式,带大家从零开始玩转Selenium!
一、什么是Selenium?

Selenium说白了就是一个自动化测试工具,可以模拟人在浏览器上的操作。比如:
- 自动打开网页
- 自动点击按钮
- 自动填写表单
- 自动获取页面数据
想象一下,你每天都要重复登录某个网站、填写相同的信息,是不是很烦?用Selenium写个脚本,一键搞定!
二、 环境搭建
1. 安装Python
# 检查Python版本
python --version
2. 安装Selenium
pip install selenium
3. 下载浏览器驱动
这里以Chrome为例:
- 查看你的Chrome版本:
chrome://version/
- 去 ChromeDriver官网 下载对应版本的驱动
- 把下载的
chromedriver.exe
放到Python安装目录的Scripts文件夹下
💡 小贴士:现在也可以用
webdriver-manager
自动管理驱动,不用手动下载了!
pip install webdriver-manager
4. 编写Selenium程序
让我们写一个最简单的程序,打开百度搜索:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time# 创建浏览器实例
driver = webdriver.Chrome()try:# 打开百度driver.get("https://www.baidu.com")print("成功打开百度!")# 找到搜索框search_box = driver.find_element(By.ID, "kw")# 输入搜索内容search_box.send_keys("Selenium自动化测试")# 按回车搜索search_box.send_keys(Keys.RETURN)# 等待一下,让页面加载time.sleep(3)print("搜索完成!")finally:# 关闭浏览器driver.quit()
运行这个程序,你会看到Chrome浏览器自动打开,然后自动搜索"Selenium自动化测试"!
三、元素定位大法
Selenium的核心就是找到页面上的元素,然后操作它们。有几种常用的定位方式:
1. 通过ID定位
element = driver.find_element(By.ID, "username")
2. 通过类名定位
element = driver.find_element(By.CLASS_NAME, "login-btn")
3. 通过标签名定位
element = driver.find_element(By.TAG_NAME, "input")
4. 通过CSS选择器定位
element = driver.find_element(By.CSS_SELECTOR, "#login-form .username")
5. 通过XPath定位
element = driver.find_element(By.XPATH, "//input[@name='username']")
💡 选择建议:优先使用ID,然后是CSS选择器,最后才考虑XPath。XPath虽然强大,但性能相对较差。
四、常用操作
1. 点击操作
# 点击按钮
button = driver.find_element(By.ID, "submit-btn")
button.click()# 点击链接
link = driver.find_element(By.LINK_TEXT, "登录")
link.click()
2. 输入操作
# 清空输入框
input_field = driver.find_element(By.ID, "username")
input_field.clear()# 输入文本
input_field.send_keys("我的用户名")# 输入特殊键
input_field.send_keys(Keys.TAB) # 按Tab键
input_field.send_keys(Keys.ENTER) # 按回车键
3. 获取元素信息
# 获取文本内容
text = element.text
print(f"元素文本:{text}")# 获取属性值
value = element.get_attribute("value")
print(f"输入框的值:{value}")
4. 等待机制
页面加载需要时间,所以我们需要等待元素出现:
4.1 强制等待(不推荐)
import time
time.sleep(3) # 等待3秒
4.2 显式等待(推荐)
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 等待元素出现
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "username")))
4.3 隐式等待
driver.implicitly_wait(10) # 全局等待10秒
4.4 自动登录
让我们写一个自动登录的完整例子:
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
from selenium.webdriver.common.keys import Keys
import timedef auto_login():driver = webdriver.Chrome()try:# 打开页面driver.get("https://example.com/login")# 等待加载wait = WebDriverWait(driver, 10)# 输入用户名username = wait.until(EC.presence_of_element_located((By.ID, "username")))username.clear()username.send_keys("你的用户名")# 输入密码password = driver.find_element(By.ID, "password")password.clear()password.send_keys("你的密码")# 点击登录按钮login_btn = driver.find_element(By.ID, "login-btn")login_btn.click()# 等待登录成功wait.until(EC.presence_of_element_located((By.CLASS_NAME, "dashboard")))print("登录成功!")except Exception as e:print(f"登录失败:{e}")finally:driver.quit()auto_login()
五、常见问题解决
1. 元素找不到
# 检查元素是否存在
try:element = driver.find_element(By.ID, "some-id")
except NoSuchElementException:print("元素不存在!")
2. 页面加载太慢
# 设置页面加载超时
driver.set_page_load_timeout(30)
3. 元素不可点击
# 等待元素可点击
wait.until(EC.element_to_be_clickable((By.ID, "button")))
六、高级技巧
1. 处理弹窗
alert = driver.switch_to.alert
alert.accept() # 点击确定
# alert.dismiss() # 点击取消
2. 切换窗口
# 获取所有窗口句柄
windows = driver.window_handles# 切换到新窗口
driver.switch_to.window(windows[1])
3. 滚动页面
# 滚动到页面底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")# 滚动到指定元素
element = driver.find_element(By.ID, "target")
driver.execute_script("arguments[0].scrollIntoView();", element)
七、总结
Selenium真的很强大,可以做的事情很多:
- 自动化测试
- 数据爬取
- 重复性任务自动化
- 网站监控
希望这篇文章对你有帮助!如果有什么问题,欢迎在评论区讨论。