Selenium基础操作方法详解


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


引言

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


一、环境准备

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

  1. 安装Selenium库

    bash 复制代码
    pip install selenium
  2. 下载浏览器驱动


二、初始化浏览器驱动

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

python 复制代码
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. 八大元素定位方式
python 复制代码
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. 输入文本与点击按钮
python 复制代码
# 在输入框输入内容
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()

四、页面导航与窗口操作

python 复制代码
# 刷新页面
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)  # 切换到最新打开的标签页

五、处理表单与下拉菜单

python 复制代码
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. 强制等待(不推荐,仅用于测试)
python 复制代码
import time
time.sleep(3)  # 强制等待3秒
2. 隐式等待(全局设置)
python 复制代码
driver.implicitly_wait(10)  # 最多等待10秒,找不到元素则报错
3. 显式等待(推荐)
python 复制代码
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"))
)

七、截图与关闭浏览器

python 复制代码
# 截取整个页面并保存
driver.save_screenshot("screenshot.png")

# 关闭当前标签页
driver.close()

# 完全退出浏览器
driver.quit()

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

python 复制代码
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. 实现多标签页切换操作
相关推荐
Feng.Lee8 小时前
聊一聊接口测试中缓存处理策略
功能测试·测试工具·缓存
HAPPY酷1 天前
selenium基础
selenium·测试工具
逾非时1 天前
python:selenium爬取网站信息
开发语言·python·selenium
天才测试猿1 天前
Selenium操作指南(全)
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
哈哈哈哈哈哈哈哈哈...........2 天前
【软件】在 macOS 上安装 Postman
测试工具·macos·postman
mizuhokaga2 天前
Postman 发送 SOAP 请求步骤 归档
测试工具·postman
测试19982 天前
接口自动化测试用例的编写方法
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
代码的乐趣2 天前
支持selenium的chrome driver更新到136.0.7103.113
chrome·python·selenium
Suresoft China2 天前
软件测试|FIT故障注入测试工具——ISO 26262合规下的智能汽车安全验证引擎
测试工具·autosar·功能安全·iso26262·故障注入测试