Python selenium库

Selenium初学者指南 – Python自动化测试

Python Selenium 完全指南

编程小白的自动化浏览器操作手册

本指南用通俗易懂的语言介绍Selenium的核心概念和用法,包含大量实际代码示例和注意事项,即使你没有任何编程基础也能快速上手!

什么是Selenium?

基本概念

  • Selenium是一个自动化操作浏览器的工具包
  • 最初设计用于Web应用测试,现在广泛用于爬虫和自动化任务
  • 支持多种浏览器:Chrome, Firefox, Edge, Safari等
  • 提供多种语言接口:Python, Java, C#, JavaScript等

工作原理

Selenium通过浏览器驱动程序与真实浏览器通信:

  1. 你的Python代码发送指令
  2. Selenium驱动接收指令
  3. 驱动程序控制真实浏览器执行操作
  4. 执行结果返回给你的代码
小贴士: 你可以把Selenium想象成”浏览器遥控器”,通过Python代码来”遥控”真实的浏览器。
安装与配置

安装步骤

  • 安装Selenium库: 在命令行输入 pip install selenium
  • 下载浏览器驱动:
    • Chrome: Chromedriver
    • Firefox: Geckodriver
    • Edge: Microsoft Edge Driver
  • 配置驱动路径: 将驱动程序放在系统PATH路径或代码指定位置

基础启动代码

from selenium import webdriver

# 启动Chrome浏览器
driver = webdriver.Chrome()

# 打开网页
driver.get(“https://www.example.com”)

# 关闭浏览器
driver.quit()
注意: 驱动程序版本必须与浏览器版本匹配,否则无法运行!
元素定位方法

定位元素就像在网页上”找人”,Selenium提供了多种方式:

八大定位方法

  • ID定位:通过HTML元素的id属性
  • Name定位:通过name属性
  • Class定位:通过class属性
  • 标签名定位:直接使用HTML标签名
  • 链接文本定位:针对超链接文字
  • 部分链接文本:链接文字的一部分
  • CSS选择器:强大的CSS样式选择语法
  • XPath:类似文件路径的定位语法

代码示例

# 通过ID定位
element = driver.find_element(“id”, “username”)

# 通过CSS定位
button = driver.find_element(“css selector”, “button.submit”)

# 通过XPath定位
link = driver.find_element(“xpath”, “//a[@class=’menu’]”)
建议: 优先使用ID和CSS选择器定位,简洁高效。XPath功能强大但速度稍慢。
元素操作指南

找到元素后,你可以像真人一样操作它们:

常用操作

  • 输入文本: element.send_keys(“文本内容”)
  • 点击元素: element.click()
  • 清除内容: element.clear()
  • 获取文本: element.text
  • 获取属性: element.get_attribute(“属性名”)
  • 判断是否可见: element.is_displayed()
  • 判断是否可操作: element.is_enabled()

模拟登录示例

# 定位用户名输入框并输入
username = driver.find_element(“id”, “username”)
username.send_keys(“myusername”)

# 定位密码框并输入
password = driver.find_element(“name”, “password”)
password.send_keys(“mypassword123”)

# 定位并点击登录按钮
login_btn = driver.find_element(“css selector”, “#login-button”)
login_btn.click()
重要: 操作前务必确保元素已加载完成,否则会报错!
等待机制

网页加载需要时间,聪明地等待元素出现是成功的关键:

三种等待方式

  • 强制等待: time.sleep(秒数) – 简单但不推荐
  • 隐式等待: driver.implicitly_wait(秒数) – 全局等待
  • 显式等待: WebDriverWait配合条件 – 精准高效

显式等待示例

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待最多10秒直到元素出现
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, “dynamic-element”))
)

# 等待元素可点击
button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CLASS_NAME, “submit-btn”))
)
最佳实践: 在实际项目中,显式等待是首选方法,它更智能高效!
浏览器操作技巧

常用浏览器控制

  • 打开网页: driver.get(“URL”)
  • 前进后退: driver.forward() / driver.back()
  • 刷新页面: driver.refresh()
  • 关闭窗口: driver.close()
  • 退出浏览器: driver.quit()
  • 窗口最大化: driver.maximize_window()
  • 设置窗口大小: driver.set_window_size(宽, 高)
  • 获取页面标题: driver.title
  • 获取当前URL: driver.current_url

多窗口/标签页处理

# 获取当前窗口句柄
main_window = driver.current_window_handle

# 打开新标签页
driver.execute_script(“window.open(”);”)

# 切换到新标签页
for handle in driver.window_handles:
    if handle != main_window:
        driver.switch_to.window(handle)
        break

# 切回原标签页
driver.switch_to.window(main_window)
注意: 操作完成后务必使用driver.quit()关闭所有窗口和驱动进程!
截图与JavaScript

页面截图

保存当前可视区域为图片文件:

# 保存截图
driver.save_screenshot(“screenshot.png”)

# 指定元素截图
element = driver.find_element(“id”, “header”)
element.screenshot(“header.png”)

执行JavaScript

执行任意JavaScript代码扩展功能:

# 滚动到页面底部
driver.execute_script(“window.scrollTo(0, document.body.scrollHeight);”)

# 修改元素样式
driver.execute_script(“arguments[0].style.border = ‘3px solid red’;”, element)

# 获取页面标题
title = driver.execute_script(“return document.title;”)
提示: 当Selenium内置方法无法实现某些复杂操作时,JavaScript是你的好帮手!
实战注意事项

新手常见问题

  • 元素定位失败:检查元素是否在iframe中
  • 浏览器版本不匹配:确保驱动版本与浏览器匹配
  • 等待时间不足:增加显式等待时间
  • 页面未完全加载:添加等待或检查网络请求
  • 浏览器被检测:添加反检测选项

高级技巧

  • 无头模式:不显示浏览器界面
  • 用户代理设置:模拟不同设备访问
  • 绕过验证码:使用第三方服务或手动处理
  • 反反爬虫:模拟人类行为模式

无头浏览器配置

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument(“–headless”) # 启用无头模式
chrome_options.add_argument(“–disable-gpu”)
chrome_options.add_argument(“–window-size=1920,1080”)

driver = webdriver.Chrome(options=chrome_options)
🌐
🔥
🚀
💻
🔍

Python初学者Selenium学习指南

记住:学习Selenium最好的方法就是动手实践!从简单的页面操作开始,逐步尝试更多功能

遇到问题时,查阅官方文档或开发者工具(F12)是解决问题的好方法

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部