当前位置: 首页 > article >正文

Selenium基础操作方法详解


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.lryc.cn/news/2397696.html

相关文章:

  • Kali Linux从入门到实战:系统详解与工具指南
  • 【大模型】Bert变种
  • vue-09(使用自定义事件和作用域插槽构建可重用组件)
  • 简单三步FastAdmin 开源框架的安装
  • RISC-V 开发板 MUSE Pi Pro 搭建 Spacengine AI模型部署环境
  • C++面试5——对象存储区域详解
  • 【Unity】AudioSource超过MaxDistance还是能听见
  • 基于 51 单片机的智能饮水机控制系统设计与实现
  • Qt 读取和写入 INI 格式的配置文件
  • 互联网大厂Java求职面试:AI与云原生架构实战解析
  • Spring:从青铜到王者,你的Java修炼手册
  • React和原生事件的区别
  • Qt creator 设计页面控件认识与了解
  • 命象架构法 02|你的系统有“用神”吗?
  • NVIDIA Mellanox BlueField-2 DPU(Data Processing Unit)智能网卡的调试和使用
  • Tomcat- AJP协议文件读取/命令执行漏洞(幽灵猫复现)详细步骤
  • B1、进度汇报(— 25/05/31)
  • 工作流引擎-11-开源 BPM 项目 jbpm
  • 【Prompt Engineering】摸索出的一些小套路
  • CSS强制div单行显示不换行
  • js的时间循环的讲解
  • Flutter实现不规则瀑布流布局拖拽重排序
  • 【第4章 图像与视频】4.1 图像的绘制
  • 苹果应用开发详细教程(2025最新版)
  • G25-05-31Rust开源项目日报 Top10
  • 2025年主流编程语言全面分析与学习指南
  • window安装nginx
  • ArcGIS Pro裁剪影像
  • [智能算法]蚁群算法原理与TSP问题示例
  • Vue-4-前端框架Vue基础入门之Vue的常用操作