使用 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

相关推荐

  • python反爬-图像验证码与滑块验证码的跳过反selenium检测,动态ip等问题

    针对反爬措施,Python可以使用以下策略来跳过图像验证码与滑块验证码、反检测Selenium,以及通过动态IP规避限制。这是一个分步说明: 1. 图像验证码的跳过与破解1.1 图像验证码处理对于简单的图像验证码,可以使用 OCR 技术直接识别验证码内容。常用库包括:Tesseract-OCR: 一款开源 OCR 工具。Pytesseract: Tesser…

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

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

    2024年11月22日
    00
  • 云服务器的 宝塔面板 中配置 PHP 支持 WebP 格式的图片

    在云服务器的 宝塔面板 中配置 PHP 支持 WebP 格式的图片,主要是通过安装或启用 GD 库或者 ImageMagick 来实现 WebP 图片的处理支持。下面是一步步的操作方法:1. 确保服务器已经安装 WebP 扩展WebP 格式的支持需要 PHP 依赖于 GD 库或 ImageMagick 库。如果你使用的是 PHP 7.0 及以上版本,通常 G…

    2024年11月29日
    00
  • 把一个矩形div变成一个直角三角形

    要将一个矩形 div 变成一个直角三角形,可以通过 CSS 的一些属性进行实现。具体的方法是利用 border 属性来隐藏矩形的部分,留下一个直角三角形的形状。以下是实现的步骤:CSS 方法: 解释:width 和 height 设置为 0:通过将 div 的宽度和高度设置为 0,实际上把矩形的主体部分隐藏了。border-left 和 border-bot…

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

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

    2024年11月26日
    00
  • Python 3.10 最新版本下载安装指南(2024)

    Python 3.10 是一个稳定且功能强大的 Python 版本,支持多种新特性,如模式匹配(match/case)等。以下是 Python 3.10 最新版本的下载安装步骤。 1. 下载 Python 3.10 官方地址 2. 安装步骤 Windows 安装 如果显示 Python 3.10.x,说明安装成功。 MacOS 安装 验证安装: 应显示 Py…

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

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

    2024年11月21日
    00
  • 安装 Laravel 11 + Filament 详细教程

    安装Laravel 11之前选确保安装了Composer 管理器,接下来的步骤是通过Composer 包管理器安装完成的。 一、前提条件 二、使用 Composer 创建新的 Laravel 11 项目 三、在现有项目中添加 Laravel 11(如果是集成到现有项目) 请注意,在实际安装过程中,可能会遇到各种问题,如权限问题(在 Linux 下,如果没有足…

    2025年1月18日
    00
  • pywebview 页面请求数据总是报错:TypeError: Cannot read properties of undefined (reading ‘api’)

    pywebview 中的 TypeError: Cannot read properties of undefined (reading ‘api’) 错误通常意味着 JavaScript 代码试图访问一个未定义的对象或属性(如 api)。这种问题通常出现在 Python 与前端 JavaScript 交互时,可能是由于以下原因:可能的原因及解决方法:Jav…

    2024年11月27日
    00
  • 修复 Elementor 网站上出现的 HTTPS 400 错误请求(服务器错误)

    在修复 Elementor 网站上出现的 HTTPS 400 错误请求(服务器错误)时,您需要采取以下步骤来排查和解决问题。这类错误通常与服务器配置、插件冲突或 HTTPS 配置相关。 1. 检查 HTTPS 配置 2. 排查插件冲突 3. 检查主题兼容性 4. 调整服务器配置 URL 重写规则: 5. 清理缓存 6. 检查网络请求 7. 联系主机服务商 如…

    2024年12月9日
    00
  • HTTP POST/GET 接口测试工具是开发和测试

    HTTP POST/GET 接口测试工具是开发和测试网络应用时必不可少的工具,用于验证 HTTP 请求的正确性、响应的状态和数据格式。以下是常用的 HTTP 接口测试工具及其功能介绍。 1. 常用的 HTTP 接口测试工具 1.1 Postman Postman 是目前最流行的 API 测试工具,适用于 RESTful 和 GraphQL 接口的测试。 功能…

    2024年11月25日
    00
  • 多方面的优化包括启动时间、React Native 速度提升 550% 运行时性能以及渲染效率的提升

    React Native 速度提升 550% 可能涉及多方面的优化,包括启动时间、运行时性能以及渲染效率的提升。这通常是通过框架改进、代码优化和工程实践的结合来实现的。以下是实现 React Native 性能大幅提升的一些关键方法和策略: 1. 启动时间优化 1.1 减少 JS Bundle 大小 1.2 预加载资源 1.3 使用优化的原生模块 2. 渲染…

    2024年12月7日
    00
  • 锁策略和优化是并发编程 synchronized 的优化,JVM 与编译器的锁优化

    锁策略和优化是并发编程中的重要话题,特别是在 Java 中,synchronized 作为基本的内置锁机制,得到了多层次的优化。在 JVM 和编译器层面,也有多种优化策略以提升锁的性能。 1. 锁策略:不同场景下的锁机制选择 2. synchronized 的优化 2.1 早期问题 在 Java 1.5 之前,synchronized 的实现依赖重量级锁,直…

    2024年11月24日
    00
  • 在 React Native 0.72.5 中使用 Hermes 引擎时JavaScript 的 Function.prototype.toString() 转成字符串

    在 React Native 0.72.5 中,使用 Hermes 引擎时,JavaScript 的 Function.prototype.toString() 方法的行为可能与其他 JavaScript 引擎(如 V8 或 JavaScriptCore)有所不同。这种差异源于 Hermes 的设计,旨在提升性能和减少内存开销。 问题描述 在 Hermes …

    2024年12月7日
    00
  • 在 Nuxt.js 应用中,webpack 的 compile 事件钩子构建过程

    在 Nuxt.js 应用中,webpack 的 compile 事件钩子通常用于在构建过程中处理或监听 Webpack 编译的状态。webpack 是 Nuxt.js 中的核心构建工具之一,而 Nuxt.js 本身是基于 Webpack 配置的,允许你通过扩展 Webpack 配置来进行自定义。要使用 webpack 的 compile 事件钩子,首先你需要…

    2024年11月29日
    00

发表回复

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

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信