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

相关推荐

  • 在 Spring Boot 中实现 Callback 回调的常用方法

    在 Spring Boot 中实现 Callback(回调) 通常用于处理外部系统调用你的服务接口。例如,当一个第三方服务完成某项操作后通知你的应用完成结果。以下是实现回调的完整流程: 1. 回调的基本流程 2. 示例代码 2.1 创建回调接口 假设第三方服务会通过 POST 请求回调数据到 /callback,并发送如下 JSON 数据: 实现代码如下: …

    2024年11月24日
    00
  • Jeewx-Api 1.3.1 发布:更简易的微信小程序开发 API 降低了开发成本

    Jeewx-Api 1.3.1 发布:更简易的微信小程序开发 API Jeewx-Api 是一款开源的微信开发 SDK,支持微信公众号、小程序、企业微信等全场景开发。1.3.1 版本针对小程序功能做了全面优化,为开发者提供了更简洁易用的 API,降低了开发成本。 1. 新版本亮点 支持微信小程序功能 更简洁的 API 支持企业微信与公众号 2. Jeewx-…

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

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

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

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

    2024年11月22日
    00
  • Python 变量类型和输入/输出相关运算符介绍

    Python 是一种动态类型语言,变量类型由值决定,并且可以在运行时随时更改。在开发中,变量的操作与输入/输出息息相关,理解它们的运算符及常见用法非常重要。 1. Python 变量类型 Python 中变量不需要显式声明。以下是常见的变量类型和它们的特性: 类型 描述 示例 整数 (int) 用于存储整数,支持正负数和进制表示。 a = 10 浮点数 (f…

    2024年11月21日
    00
  • PHM技术:一维信号时序全特征分析(统计域/频域/时域)信号处理

    PHM(Prognostics and Health Management,预测与健康管理)技术中的一维信号时序特征分析,旨在从信号中提取与设备健康状态相关的多种特征。以下是针对统计域、频域和时域特征分析的详细介绍和常见方法。 1. 时域特征分析时域特征直接从原始信号提取,描述信号的统计特性或时间行为。这些特征反映信号的幅值、变化趋势和波形形状。1.1 常用…

    2024年11月28日
    00
  • uni-app 一个使用 Vue.js 开发所有前端应用的框架跨端开发的优势

    uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到 iOS、Android、Web(响应式)、以及各种小程序(微信 / 支付宝 / 百度 / 头条 / QQ / 钉钉)等多个平台,其跨端开发具有以下优势: 开发效率高 跨平台兼容性好 性能优化 生态丰富 学习成本低

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

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

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

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

    2024年12月9日
    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
  • Python与Jupyter Notebook中的数据可视化实现

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

    2024年11月26日
    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
  • 实现微信支付提现api接口教程

    微信支付的提现功能,通常是通过调用 企业付款到零钱 API 或 企业付款到银行卡 API 来实现的。以下是如何使用微信支付提现 API 的详细教程,包括其前置条件、接口调用以及注意事项。 1. 准备工作 1.1. 开通微信支付商户号 1.2. 配置证书 将这些文件保存在你的服务器上,用于发起 HTTPS 请求。 1.3. 获取 API 密钥 2. 企业付款到…

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

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

    2024年11月27日
    00
  • Docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像方法

    使用 Docker 快速部署 Nginx、Redis、MySQL、Tomcat 以及制作镜像 通过 Docker,开发者可以快速部署和管理各种服务。本文介绍如何快速使用 Docker 部署 Nginx、Redis、MySQL 和 Tomcat,以及如何制作自定义镜像。 1. Docker 基础准备 安装 Docker 如果还未安装 Docker,可按照以下步…

    2024年11月26日
    00

发表回复

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

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信