详细介绍:Selenium基础操作方法详解

news/2025/10/6 9:31:05/文章来源:https://www.cnblogs.com/wzzkaifa/p/19127296

Selenium基础操作方法详解:从零开始编写自动化脚本(附完整代码)


引言

Selenium是自动化测试和网页操作的利器,但对于新手来说,掌握基础操作是成功的第一步。本文将手把手教你使用Selenium完成浏览器初始化、元素定位、表单操作等核心功能,并提供可直接运行的Python代码示例,助你快速入门!


一、环境准备

在开始前,确保已安装以下内容:

  1. 安装Selenium库
    pip install selenium
  2. 下载浏览器驱动
    • Chrome驱动:ChromeDriver下载地址
    • Chrome最新:ChromeDriver新版本下载地址
    • Firefox驱动:GeckoDriver下载地址
    • 将驱动文件放在系统路径(如项目目录)或配置环境变量。
    • 站内chromedriver下载地址:站内ChromeDriver下载

二、初始化浏览器驱动

以Chrome为例,启动浏览器并打开网页:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 指定驱动路径(根据实际路径修改)
service = Service(executable_path="chromedriver.exe"
) # 根据实际路径修改
driver = webdriver.Chrome(service=service)
# 打开网页
driver.get("https://www.example.com"
)
# 最大化浏览器窗口
driver.maximize_window(
)

三、元素定位与操作

1. 八大元素定位方式
from selenium.webdriver.common.by import By
# 通过ID定位(最常用)
element = driver.find_element(By.ID, "username"
)
# 通过Class Name定位
element = driver.find_element(By.CLASS_NAME, "input-field"
)
# 通过标签名定位
element = driver.find_element(By.TAG_NAME, "input"
)
# 通过Name属性定位
element = driver.find_element(By.NAME, "password"
)
# 通过链接文本定位(精确匹配)
element = driver.find_element(By.LINK_TEXT, "点击登录"
)
# 通过部分链接文本定位(模糊匹配)
element = driver.find_element(By.PARTIAL_LINK_TEXT, "登录"
)
# 通过CSS选择器定位(推荐)
element = driver.find_element(By.CSS_SELECTOR, "#submit-btn .icon"
)
# 通过XPath定位(复杂结构适用)
element = driver.find_element(By.XPATH, "//div[@id='header']//a[text()='首页']"
)
2. 输入文本与点击按钮
# 在输入框输入内容
driver.find_element(By.ID, "search-box"
).send_keys("Selenium教程"
)
# 点击按钮
driver.find_element(By.CSS_SELECTOR, "#search-button"
).click(
)
# 清空输入框
driver.find_element(By.ID, "search-box"
).clear(
)

四、页面导航与窗口操作

# 刷新页面
driver.refresh(
)
# 后退到上一页
driver.back(
)
# 前进到下一页
driver.forward(
)
# 获取当前页面标题
print(driver.title)
# 获取当前URL
print(driver.current_url)
# 切换浏览器标签页
for handle in driver.window_handles:
driver.switch_to.window(handle) # 切换到最新打开的标签页

五、处理表单与下拉菜单

from selenium.webdriver.support.select import Select
# 选择单选按钮
driver.find_element(By.CSS_SELECTOR, "input[type='radio'][value='male']"
).click(
)
# 勾选复选框
checkbox = driver.find_element(By.ID, "agree-terms"
)
if
not checkbox.is_selected(
):
checkbox.click(
)
# 操作下拉菜单
dropdown = Select(driver.find_element(By.ID, "country"
)
)
dropdown.select_by_visible_text("中国"
) # 按文本选择
dropdown.select_by_value("CN"
) # 按value属性选择
dropdown.select_by_index(1
) # 按索引选择

六、等待机制

1. 强制等待(不推荐,仅用于测试)
import time
time.sleep(3
) # 强制等待3秒
2. 隐式等待(全局设置)
driver.implicitly_wait(10
) # 最多等待10秒,找不到元素则报错
3. 显式等待(推荐)
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 等待元素可见
element = WebDriverWait(driver, 10
).until(
EC.visibility_of_element_located((By.ID, "loading"
)
)
)
# 等待元素可点击
button = WebDriverWait(driver, 10
).until(
EC.element_to_be_clickable((By.ID, "submit-btn"
)
)
)

七、截图与关闭浏览器

# 截取整个页面并保存
driver.save_screenshot("screenshot.png"
)
# 关闭当前标签页
driver.close(
)
# 完全退出浏览器
driver.quit(
)

八、完整案例:自动化搜索

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 初始化浏览器
service = Service(executable_path="chromedriver.exe"
) # 根据实际路径修改
driver = webdriver.Chrome(service=service)
driver.get("https://www.baidu.com"
)
# 输入关键词并搜索
search_box = driver.find_element(By.ID, "kw"
)
search_box.send_keys("Selenium自动化测试"
)
search_box.submit(
) # 提交表单
# 等待结果加载
WebDriverWait(driver, 10
).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "h3"
)
)
)
# 打印第一条结果的标题
results = driver.find_elements(By.CSS_SELECTOR, "h3"
)
print("第一条结果:"
, results[0].text)
# 关闭浏览器
driver.quit(
)

注意:示例代码 chromedriver.exe 放置在脚本的同级目录下,请根据实际情况修改。
在这里插入图片描述


结语

通过本文的代码示例,你已经掌握了Selenium的基础操作,包括浏览器控制、元素定位、表单填写和等待机制。接下来,可以尝试以下练习:

  1. 编写一个自动化登录脚本
  2. 爬取动态加载的网页数据
  3. 实现多标签页切换操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么做自己的淘宝网站南阳做网站哪家好

2345王牌浏览器网页加载慢怎么办?相信很多2345王牌浏览器用户都碰到过这个问题,今天小编就给大家带来这个解决办法,让你拥有极速加载网页。 2345王牌浏览器网页加载慢解决办法 1、打开清除上网痕迹。 入口一:标签栏居中,菜单栏…

完整教程:高效Excel数据净化工具:一键清除不可见字符与格式残留

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

手把手教你用 Docker 部署 Redis

本文详细介绍从轩辕镜像拉取Redis镜像的多种方式(登录验证、免登录、官方直连等),提供快速部署、持久化部署(推荐)、docker-compose部署(企业级)三种方案,还包含结果验证方法及无法远程连接、设置密码等常见问…

悟空博弈单元(WBUC)与广域统一计算(WAUC)研究:价值共生的技术基石——声明Ai研究

悟空博弈单元(WBUC)与广域统一计算(WAUC)研究:价值共生的技术基石 一、研究背景与概述 人工智能技术的发展正经历从单纯的"知识存储"向"知行合一"的深刻范式转变 。在这一转型过程中,传统计算架…

如何快速推广自己的网站旧房装修找哪家

微信爱情指数计算器整蛊app是一款不错的爱情必备的计算器服务,让情侣们有一个很有意思的整蛊服务的App,喜欢的话快来下载吧。微信爱情指数计算器整蛊app介绍1、爱情指数计算器整蛊app是很有意思的一款爱情指数计算器软件2、操作起来也比较的简单&#xf…

掌握形式验证工具,提升芯片验证效率

在当今竞争激烈的 IC 设计行业,确保芯片功能正确且无误至关重要。形式验证工具凭借数学驱动的严谨验证方式,在超越传统仿真方法的同时,为复杂设计提供了更高信心与效率的验证路径。核心优势:为什么选择形式验证工具…

宁波专业网站制作服务济宁做网站建设的公司

来源: 人机与认知实验室摘要:有人机与无人机混合编队协同作战是未来空战的重要形式。有人机是中央指挥,而无人机直接接受有人机的指挥和控制,并进行战场态势感知、目标打击等。有人机和无人机可以看成空间上分离而逻辑上一体的巨型…

长租公寓的生存越来越难了 - 智慧园区

最近两年,受保租房大量入市以及业主直租比例回升影响,长租公寓客源被持续分流,运营压力与日俱增。 在此背景下,通过产品创新来破解获客难题,成为租赁行业发展的迫切需求。 长租公寓,亟需新一轮产品内卷。卷户型 …

天津营销网站建设公司哪家好重庆做网站建设公司排名

一早打开电脑发现代码关联失效了,目测可能跟昨天一些插件更新有关 结论 就这货,开了就没法提示代码关联,估计预览版全是BUG。 另一个坑 同期有个unity插件也是预览版,“非常好使”,当场去世。评论点开有好几个人说用…

Spring Boot中保存前端上传的图片 - 教程

Spring Boot中保存前端上传的图片 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

完整教程:Go语言的context

完整教程:Go语言的context2025-10-06 09:10 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; …

国外做农产品有名的网站手机端网站设计模板

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

创意网站建设排行榜wordpress删除摘要

facenet是一款非常经典的神经网络模型,它可以直接学习从人脸图像到欧几里德空间的映射(直接将人脸映射到欧几里得空间)。在欧几里德空间中,距离直接对应于人脸相似性的度量。一旦这个空间产生,使用标准技术,将FaceNet嵌入作为特征…

Python包管理器 uv替代conda? - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

广州建站网络推广公司大气绿色网站模板

引言 随着软件复杂度的不断增加,如何有效地管理类内部的数据变得愈发重要。属性装饰器作为一种强大的工具,不仅简化了代码,还增强了程序的可读性和可维护性。通过使用属性装饰器,我们可以轻松地实现对类属性的读取、修改以及删除…

网站开发维护报价单wordpress的源代码

一.标识符1.标识符的作用:C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称2.标识符的规范:一个标识符只能以字母 A-Z 或 a-z 或下划线 _ 开始 后跟零个或多个字母、下划线和数字(0-9),第二位开始也只能用 A-Z…

P2724 [IOI 1998 / USACO3.1] 联系 Contact 做题笔记

前面思考了好久都没想出什么,看了题解才会,我真是太菜了 思路 本题可以暴力枚举解决,但是直接暴力枚举又会超时 怎么办呢,注意到这个序列中只有 \(0\) 和 \(1\),长得像二进制。直接把二进制强压成十进制就不用一位…

教育网站平面设计53建筑人才网

目录 问题描述: 解决方法: 重要代码: 问题描述: 项目中oracle数据库需要转换为mysql,Oracle中的表字段定义为number(36,16)类型的工具自动转换为mysql的decimal(36,16)。在Oracle数据库中,number(36,16)类型的字段,使用BigDeci…

如果能重来

如果能重来如果能重来 好多事,年轻的时候不去尝试,年纪大了就更不可能去尝试,尤其是一个人。年少多去经历,是一笔财富,更是“不负少年时”。2025.10.6

深入解析:DeepSeek 赋能智能零售,解锁动态定价新范式

深入解析:DeepSeek 赋能智能零售,解锁动态定价新范式2025-10-06 08:57 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; d…