使用 Python Selenium 控制 Chrome 浏览器 进行自动化操作

使用 Python Selenium 控制 Chrome 浏览器 进行自动化操作是 Web 自动化测试和爬虫的常用方法之一。以下是一个完整的入门教程,包括如何安装、配置以及一些示例代码。

1. 安装所需环境

1.1 安装 Selenium

使用 pip 安装 Selenium:

pip install selenium

1.2 下载 ChromeDriver

  • 根据你电脑上 Google Chrome 的版本下载对应的 ChromeDriver
    1. 打开 Chrome 浏览器 检查版本号。
    2. 前往 ChromeDriver 下载页面
    3. 下载与 Chrome 版本匹配的 ChromeDriver,并解压到一个路径。

1.3 配置 ChromeDriver 路径

  • 将 ChromeDriver 放置到环境变量路径中(推荐)。
  • 或在代码中指定其绝对路径。

2. 基本用法

2.1 导入和启动浏览器

以下是一个简单的示例:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time

# 配置 ChromeDriver 的路径
chromedriver_path = "/path/to/chromedriver"

# 创建 WebDriver 对象
service = Service(chromedriver_path)
driver = webdriver.Chrome(service=service)

# 打开一个网页
driver.get("https://www.google.com")

# 等待 5 秒后关闭浏览器
time.sleep(5)
driver.quit()

3. 常见功能示例

3.1 查找元素

Selenium 提供多种方式定位网页元素:

  • By.ID
  • By.NAME
  • By.CLASS_NAME
  • By.TAG_NAME
  • By.XPATH
  • By.CSS_SELECTOR

示例:

# 打开 Google
driver.get("https://www.google.com")

# 查找搜索框(通过 name 属性)
search_box = driver.find_element(By.NAME, "q")

# 输入搜索内容
search_box.send_keys("Selenium Python")

# 提交搜索
search_box.submit()

3.2 等待元素加载

为了确保元素加载完成,推荐使用显式等待:

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

# 等待某个元素出现(最多等 10 秒)
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.NAME, "q")))

4. 高级功能

4.1 设置浏览器选项

可以通过 Options 配置浏览器行为:

from selenium.webdriver.chrome.options import Options

# 配置无头模式(Headless)
options = Options()
options.add_argument("--headless")
options.add_argument("--disable-gpu")

# 使用配置启动浏览器
driver = webdriver.Chrome(service=service, options=options)

4.2 执行 JavaScript

可以通过 Selenium 执行自定义 JavaScript:

# 执行 JavaScript 获取页面标题
title = driver.execute_script("return document.title;")
print(f"Page Title: {title}")

4.3 截屏

保存当前页面的截图:

driver.save_screenshot("screenshot.png")

5. 关闭浏览器

使用以下方法确保资源释放:

# 关闭当前窗口
driver.close()

# 退出浏览器并释放资源
driver.quit()

6. 常见问题与解决方案

6.1 异常:selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH

  • 原因:未配置 ChromeDriver 路径。
  • 解决:
    • 确保 ChromeDriver 在系统 PATH 中。
    • 或在代码中提供 ChromeDriver 的绝对路径。

6.2 浏览器版本不兼容

6.3 页面加载超时

  • 增加页面加载超时时间:python复制代码
driver.set_page_load_timeout(30)  # 设置为 30 秒

6.4 无法定位元素

  • 确认定位方式是否正确,或元素是否存在。
  • 使用显式等待确保元素加载完成。

7. 示例:完整搜索自动化脚本

以下脚本将自动打开 Google,搜索 “Python Selenium”,并打印搜索结果的标题:

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

# 配置 ChromeDriver 路径
chromedriver_path = "/path/to/chromedriver"
service = Service(chromedriver_path)
driver = webdriver.Chrome(service=service)

try:
    # 打开 Google
    driver.get("https://www.google.com")

    # 等待搜索框加载
    wait = WebDriverWait(driver, 10)
    search_box = wait.until(EC.presence_of_element_located((By.NAME, "q")))

    # 输入搜索内容并提交
    search_box.send_keys("Python Selenium")
    search_box.submit()

    # 等待搜索结果加载
    results = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "h3")))

    # 打印搜索结果标题
    for result in results:
        print(result.text)

finally:
    # 退出浏览器
    driver.quit()

8. 总结

通过 Python Selenium 和 Chrome WebDriver,你可以实现强大的 Web 自动化能力,包括数据抓取、表单填写和页面测试等。对于复杂的页面,可以结合等待机制和 JavaScript 动态操作完成更多任务。如果遇到问题,可以参考 Selenium 官方文档ChromeDriver 文档

发布者:myrgd,转载请注明出处:https://www.object-c.cn/4519

Like (0)
Previous 2024年11月24日 下午10:09
Next 2024年11月25日 上午11:11

相关推荐

  • 博客网站的链接添加nofollow的好处

    在博客中为链接添加 nofollow 属性可以在以下几个方面带来好处: 1. 防止权重流失作用:为外部链接添加 nofollow 标签可以阻止搜索引擎将页面权重(PageRank)传递给目标页面,从而保留网站自身的 SEO 权重。适用场景:指向不可靠或低质量内容的链接。赞助商链接或付费推广链接。 2. 避免搜索引擎惩罚作用:搜索引擎(如 Google)要求对…

    2024年11月28日
    00
  • Python与Jupyter Notebook中的数据可视化实现

    数据可视化是分析和展示数据的重要手段,而 Python 与 Jupyter Notebook 是构建交互式数据可视化的重要工具组合。以下是如何在 Python 和 Jupyter Notebook 中实现数据可视化的详细介绍。 1. 常用数据可视化库Python 中有多个强大的可视化库,以下是几个常用的:1.1 Matplotlib特点:功能强大、灵活,但语…

    2024年11月26日
    00
  • Java 8 到 Java 17 的升级涉及一些关键变化

    JDK 8 升级到 JDK 17 指南Java 8 到 Java 17 的升级涉及一些关键变化,包括语言特性、API 更新和性能改进。以下是一些升级要点:语法和语言特性:记录类(Record Class):Java 14 引入了记录类,提供了一种简化创建不可变数据对象的方式。密封类(Sealed Classes):Java 15 引入了密封类,允许开发者限制…

    2024年11月27日
    00
  • 使用 Python 和 PyHive 连接 Hive 数据库需要安装相关依赖并配置好 Hive 服务

    使用 Python 和 PyHive 连接 Hive 数据库需要安装相关依赖并配置好 Hive 服务。以下是具体步骤:1. 安装依赖确保安装了以下库:PyHive:提供与 Hive 的交互。Thrift:支持 Hive 使用 Thrift 协议通信。Sasl:如果 Hive 使用 Kerberos 验证,需要安装此模块。Pyhive[Hive]:PyHive…

    2024年11月28日
    00
  • C语言中的操作符(Operators)对数据进行运算的符号

    C语言中的操作符(Operators)是对数据进行运算的符号,分为多种类型,支持从基本算术到复杂的逻辑操作。以下是C语言操作符的详解: 1. 算术操作符(Arithmetic Operators) 用于执行基本数学运算: 示例: 2. 关系操作符(Relational Operators) 用于比较两个值,结果为布尔值: 示例: 3. 逻辑操作符(Logic…

    2024年11月22日
    00
  • 微信小程序中,通过Node.js连接本地 MySQL 实现数据的增删改查

    在微信小程序中,通过Node.js连接本地 MySQL 实现数据的增删改查的过程,可以分为以下几个步骤: 1. 准备工作 必要工具: 2. 搭建 Node.js 后端服务 安装依赖 在 Node.js 项目中,使用 npm init 初始化项目,并安装以下依赖: express: 用于搭建 Web 服务。 mysql: 用于连接和操作 MySQL 数据库。 …

    2024年12月9日
    00
  • 在 Go 语言中,对文件的基础操作介绍

    在 Go 语言中,文件操作是基础技能之一,主要通过 os、io 和 io/ioutil 等标准库完成。以下是对文件操作的全面介绍,帮助你在 Go 语言的“成神之路”上迈出关键一步! 1. 创建文件使用 os.Create 创建文件,如果文件已存在会被清空。示例代码 2. 打开文件使用 os.Open 打开文件(只读模式),使用 os.OpenFile 可以指…

    2024年12月2日
    00
  • 在Python中的Numpy库下载与安装教程

    Python 的 Numpy 库下载与安装(超详细教程) NumPy 是 Python 中一个非常强大的科学计算库,特别适用于处理大规模的数组、矩阵计算以及执行高效的数学操作。无论是机器学习、数据分析还是科学计算,NumPy 都是基础工具之一。 下面是关于如何下载和安装 NumPy 的详细教程,包括在不同操作系统上的安装方法。 1. 确认环境与准备工作 在开…

    2024年11月25日
    00
  • 在 Windows 上使用 PyCharm 进行远程开发并连接到 Spark 进行 PySpark 开发

    在 Windows 上使用 PyCharm 进行远程开发并连接到 Spark 进行 PySpark 开发,通常涉及以下几个步骤:1. 设置 PyCharm 环境首先,需要安装 PyCharm,并确保你使用的是专业版(Professional),因为它支持远程开发。确保 Python 已经安装,并配置好虚拟环境。2. 配置远程开发环境在 Windows 上使用…

    2024年11月27日
    00
  • 2024最新版 Anaconda 安装方法

    Anaconda 是一个非常流行的数据科学与机器学习平台,包含 Python、常用库、以及环境管理工具 Conda。以下是 2024 年最新版 Anaconda 的安装步骤。 1. 下载 Anaconda 下载地址 2. 安装步骤 Windows 系统 MacOS 系统 Linux 系统 打开终端,定位到下载目录: 运行安装脚本: 执行安装脚本: 许可协议:…

    2024年11月21日
    00
  • 如何用pbootcmsAPI接口开发微信小程序UNIAPP

    使用 PbootCMS 的 API 接口结合 UniApp 开发微信小程序,可以实现高效的内容管理和展示。以下是一个完整的开发流程,包括 API 接口设置、小程序功能设计和开发细节。 1. 准备工作1.1 配置 PbootCMS API 接口PbootCMS 提供 API 功能,需在后台开启并配置:登录 PbootCMS 后台管理。前往 系统管理 -> AP…

    2024年11月28日
    00
  • 理解 HTML、HTML5 和 “H5” 区别的重要性

    HTML & HTML5 & H5 的区别在构建现代网页时,理解 HTML、HTML5 和 “H5” 的区别是非常重要的。以下是它们的概念和主要区别: 1. HTML(超文本标记语言)定义HTML 是 HyperText Markup Language 的缩写,即超文本标记语言,用于定义网页内容的结构和含义。特性提供基…

    2024年12月2日
    00
  • C++ STL vector 类:动态数组的高效应用

    vector 是 C++ 标准库(STL)中最常用的容器之一,它提供了一个动态数组的实现,能够根据需要自动扩展或收缩。vector 是一个线性数据结构,具有高效的随机访问能力和动态扩展能力,广泛应用于需要频繁增删元素且对随机访问要求较高的场景。 1. vector 类简介 vector 是 C++ 标准模板库(STL)中提供的一种容器类,它类似于动态数组(d…

    2024年11月25日
    00
  • 浏览器跨域请求中携带 Cookie需要同时在前端和后端进行配置

    浏览器跨域请求中,要让请求携带 Cookie,需要同时在前端和后端进行配置。以下是实现的方法: 前端配置 在前端代码中使用 fetch 或 Axios 发起请求时,需要设置 credentials 属性: 1. Fetch 示例 2. Axios 示例 后端配置 在后端需要允许跨域请求,并确保 Cookie 能够正常传递。 1. 设置 Access-Cont…

    2024年12月9日
    00
  • 使用 Python 的 pip 安装 Selenium 和 WebDriver 测试环境

    Selenium 是一个强大的自动化测试工具,广泛用于 Web 应用程序的浏览器操作。以下是完整的 Selenium 教程,帮助初学者理解其基础功能和高级用法。 1. 安装 Selenium 和 WebDriver 1.1 安装 Selenium 使用 Python 的 pip 安装 Selenium: 1.2 下载 WebDriver 根据目标浏览器下载对…

    2024年11月26日
    00

发表回复

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

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信