Selenium 常用浏览器操作全解析

文章目录

Selenium 对浏览器的操作覆盖「窗口控制、页面导航、元素交互、数据提取、设置配置」五大核心场景,我会按「高频常用→进阶实用」的顺序整理,每个操作都配 代码示例+场景说明 ,新手能直接套用。

一、基础窗口控制(最常用)

这类操作主要用于调整浏览器状态,是爬虫/自动化的第一步。

操作功能 代码示例 适用场景
启动浏览器 driver = webdriver.Chrome() 初始化浏览器(默认窗口)
最大化窗口 driver.maximize_window() 避免元素因窗口过小被遮挡
设置窗口大小 driver.set_window_size(1920, 1080)(宽/高) 模拟指定分辨率的浏览器
移动窗口位置 driver.set_window_position(100, 100)(x/y坐标) 多窗口操作时调整位置
最小化窗口 driver.minimize_window() 临时隐藏窗口(不关闭)
关闭当前标签页 driver.close() 只关闭当前标签,保留浏览器
关闭整个浏览器 driver.quit() 结束会话(释放资源,必用)

示例代码(窗口控制)

python 复制代码
from selenium import webdriver

# 初始化Chrome浏览器
driver = webdriver.Chrome()
# 最大化窗口(优先推荐)
driver.maximize_window()
# 访问网页
driver.get('https://www.baidu.com')

# 临时调整窗口大小
driver.set_window_size(800, 600)
print(f'当前窗口大小:{driver.get_window_size()}')  # 获取窗口大小

# 操作完成后关闭浏览器(关键!避免进程残留)
driver.quit()

二、页面导航操作(核心)

用于控制页面的跳转、刷新、回退/前进,模拟用户浏览行为。

操作功能 代码示例 说明
访问指定URL driver.get('https://www.baidu.com') 打开目标网页
刷新页面 driver.refresh() 重新加载当前页面(解决加载异常)
回退到上一页 driver.back() 模拟浏览器左上角「后退」按钮
前进到下一页 driver.forward() 模拟浏览器左上角「前进」按钮
获取当前URL current_url = driver.current_url 验证是否跳转到目标页面
获取页面标题 title = driver.title 验证页面是否加载正确
设置页面加载超时 driver.set_page_load_timeout(10)(单位:秒) 避免页面加载过久卡住

示例代码(页面导航)

python 复制代码
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.maximize_window()

# 访问百度
driver.get('https://www.baidu.com')
print(f'当前页面标题:{driver.title}')  # 输出:百度一下,你就知道

# 输入关键词并跳转
search_box = driver.find_element('id', 'kw')
search_box.send_keys('Selenium教程')
search_box.submit()  # 提交搜索(等价于按回车)
time.sleep(2)
print(f'搜索后URL:{driver.current_url}')

# 回退到百度首页
driver.back()
time.sleep(1)
# 前进到搜索结果页
driver.forward()
time.sleep(1)
# 刷新页面
driver.refresh()

driver.quit()

三、元素交互操作(爬虫核心)

这是爬取动态页面的关键,用于模拟用户点击、输入、选择等操作。

1. 输入/点击类

操作功能 代码示例 适用场景
输入文本 element.send_keys('要输入的内容') 账号/密码/搜索框输入
清空输入框 element.clear() 重新输入前清空原有内容
点击元素 element.click() 按钮、链接、复选框点击
提交表单 element.submit() 搜索框/登录表单提交(回车)
模拟按键 element.send_keys(Keys.ENTER)(需导入Keys) 按回车/空格/删除等

2. 选择类(下拉框/复选框)

python 复制代码
from selenium.webdriver.support.select import Select

# 1. 下拉框操作
select_element = driver.find_element('id', 'select_id')
select = Select(select_element)
select.select_by_index(0)  # 按索引选择(从0开始)
select.select_by_value('value值')  # 按value属性选择
select.select_by_visible_text('显示文本')  # 按可见文本选择

# 2. 复选框/单选框
checkbox = driver.find_element('id', 'checkbox_id')
if not checkbox.is_selected():  # 判断是否已选中
    checkbox.click()

示例代码(元素交互)

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time

driver = webdriver.Chrome()
driver.get('https://www.12306.cn/index/')
driver.maximize_window()
time.sleep(2)  # 等待页面加载

# 1. 输入出发地/目的地
from_input = driver.find_element('id', 'fromStationText')
from_input.click()
from_input.send_keys('北京')
from_input.send_keys(Keys.ENTER)  # 按回车确认

to_input = driver.find_element('id', 'toStationText')
to_input.click()
to_input.send_keys('上海')
to_input.send_keys(Keys.ENTER)

# 2. 选择日期(下拉框示例)
# 注意:12306的日期是JS渲染,此处仅演示下拉框语法
# select_date = Select(driver.find_element('id', 'date_select'))
# select_date.select_by_visible_text('2026-03-20')

# 3. 点击查询按钮
query_btn = driver.find_element('id', 'search_one')
query_btn.click()

time.sleep(3)
driver.quit()

四、页面数据提取操作

爬取数据的核心步骤,用于获取页面中的文本、属性、源码等信息。

操作功能 代码示例 说明
获取元素文本 text = element.text 提取可见文本(如标题、价格)
获取元素属性 href = element.get_attribute('href') 提取链接、图片src、value等
获取页面源码 page_source = driver.page_source 获取整个页面的HTML源码
获取Cookie cookies = driver.get_cookies() 提取登录后的Cookie(免登录)
执行JS代码 driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') 滚动页面、修改页面元素等

示例代码(数据提取)

python 复制代码
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://movie.douban.com/top250')
driver.maximize_window()

# 1. 提取第一个电影的名称和评分
first_movie = driver.find_element('xpath', '//div[@class="item"][1]')
title = first_movie.find_element('class name', 'title').text
score = first_movie.find_element('class name', 'rating_num').text
print(f'豆瓣Top250第一部:{title},评分:{score}')

# 2. 提取第一个电影的链接
movie_link = first_movie.find_element('tag name', 'a').get_attribute('href')
print(f'电影链接:{movie_link}')

# 3. 执行JS滚动到页面底部
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')

# 4. 获取页面Cookie(用于免登录)
cookies = driver.get_cookies()
print(f'页面Cookie数量:{len(cookies)}')

driver.quit()

五、进阶浏览器操作(实用技巧)

1. 标签页/窗口切换

python 复制代码
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')

# 打开新标签页
driver.execute_script('window.open("https://www.douban.com")')
time.sleep(1)

# 获取所有标签页句柄
windows = driver.window_handles
print(f'当前标签页数量:{len(windows)}')

# 切换到第二个标签页(豆瓣)
driver.switch_to.window(windows[1])
print(f'切换后页面标题:{driver.title}')

# 切回第一个标签页(百度)
driver.switch_to.window(windows[0])
print(f'切回后页面标题:{driver.title}')

driver.quit()

2. 无头模式(后台运行)

python 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 配置无头模式
chrome_options = Options()
chrome_options.add_argument('--headless')  # 无头模式
chrome_options.add_argument('--disable-gpu')  # 禁用GPU(避免报错)
chrome_options.add_argument('--window-size=1920,1080')  # 设置窗口大小

# 初始化浏览器
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.baidu.com')
print(f'无头模式下页面标题:{driver.title}')

driver.quit()

3. 禁用图片加载(提升速度)

python 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 禁用图片加载
prefs = {'profile.managed_default_content_settings.images': 2}
chrome_options.add_experimental_option('prefs', prefs)

driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.taobao.com')
print('禁用图片后页面加载完成')

driver.quit()
相关推荐
咕泡科技2 小时前
从0到1系统学习大模型:一份接地气的入门指南
人工智能·python·学习
KerwinChou_CN2 小时前
大模型 RAG 中 RRF(Reciprocal Rank Fusion倒数排序融合)是什么
人工智能·后端·python
无巧不成书02182 小时前
Java数值字面量速查表
java·开发语言·python·开发者·字面量
小鸡吃米…2 小时前
测试线程应用程序
开发语言·python
python开发笔记2 小时前
python(79) 底层代码追踪工具
开发语言·python
Bert.Cai2 小时前
Python函数的定义与调用
开发语言·python
2501_911088232 小时前
Web开发与API
jvm·数据库·python
带娃的IT创业者2 小时前
Python 异步编程完全指南(五):避坑指南与生态推荐
python·asyncio·aiohttp·异步编程·技术博客·阻塞应对