当前位置: 首页 > news >正文

自动化测试工具 Selenium 入门指南

Selenium 是一款强大的自动化测试工具,可用于模拟用户在浏览器中的各种操作。它支持多种浏览器(如 Chrome、Firefox、Edge 等)和多种编程语言(如 Python、Java、C# 等),广泛应用于 Web 应用程序的自动化测试、网页数据爬取、自动化操作等场景。

一、Selenium 的安装

要开始使用 Selenium,首先需要安装它。使用 Python 的 pip 包管理器可以轻松完成安装。打开命令行终端,并执行以下命令:

pip install selenium

如果你使用的是虚拟环境,请确保在激活虚拟环境后再执行此命令。安装完成后,你就可以在 Python 代码中导入并使用 Selenium 库了。

在安装过程中,可能会遇到一些常见问题,下面是一些解决方案:

  1. 网络问题:如果在执行pip install命令时遇到网络连接超时或失败的情况,可以尝试使用国内的镜像源来加速下载。例如,使用清华大学的 pip 镜像:
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. 权限问题:如果你没有足够的权限在全局环境中安装包,可能会看到 "Permission denied" 错误。此时,可以考虑以下两种解决方案:
    • 使用虚拟环境:虚拟环境可以让你在项目特定的环境中安装包,而不需要管理员权限。创建和激活虚拟环境的命令如下:
      # 创建虚拟环境
      python -m venv myenv# 激活虚拟环境(Windows)
      myenv\Scripts\activate# 激活虚拟环境(Linux/Mac)
      source myenv/bin/activate
      
    • 使用--user选项:在安装命令后添加--user选项,将包安装到用户目录下:
      pip install selenium --user
      

安装完成后,你可以通过以下代码验证 Selenium 是否安装成功:

import selenium
print(selenium.__version__)  # 打印Selenium版本号

如果能够正常打印出版本号,说明 Selenium 已经成功安装。

二、Edge 浏览器驱动的下载与配置

Selenium 需要对应的浏览器驱动才能控制浏览器。对于 Edge 浏览器,你需要下载 Microsoft Edge WebDriver。

  1. 确定 Edge 浏览器版本:打开 Edge 浏览器,点击右上角的三个点(...),选择 "帮助和反馈" > "关于 Microsoft Edge",查看版本号。版本号通常显示为类似于 "114.0.1823.51" 的格式。

  2. 下载对应版本的 WebDriver:访问 Microsoft Edge WebDriver 下载页面,选择与你浏览器版本匹配的 WebDriver 进行下载。具体步骤如下:

    • 在下载页面中,找到与你 Edge 浏览器版本完全匹配的 WebDriver 版本。如果找不到完全匹配的版本,选择最接近且不高于你浏览器版本的驱动。
    • 根据你的操作系统(Windows、macOS 或 Linux)选择相应的下载包。
    • 下载完成后,得到一个压缩文件(如.zip 或.msi 格式)。
  3. 解压并放置驱动文件:将下载的压缩包解压,得到一个 exe 文件(如 msedgedriver.exe)。将此文件放在 Python 解释器的根目录中。你可以通过以下 Python 代码查看解释器的根目录:

import sys
print(sys.executable)

执行上述代码后,会输出 Python 解释器的路径,例如:

C:\Python39\python.exe

在这个例子中,Python 解释器的根目录是C:\Python39\,你需要将msedgedriver.exe文件复制到这个目录中。

除了将驱动文件放在 Python 解释器根目录外,还有其他几种配置方式:

  • 将驱动路径添加到系统环境变量

    1. 右键点击 "此电脑",选择 "属性"
    2. 点击 "高级系统设置"
    3. 在 "系统属性" 窗口中,点击 "环境变量" 按钮
    4. 在 "系统变量" 列表中,找到 "Path" 变量,点击 "编辑"
    5. 点击 "新建",添加驱动文件所在的目录路径
    6. 确认所有窗口,使更改生效
  • 在代码中显式指定驱动路径
    如果你不想修改系统环境变量或 Python 解释器目录,也可以在代码中明确指定驱动的路径:

    from selenium import webdriver
    from selenium.webdriver.edge.service import Service# 显式指定驱动路径
    edge_driver_path = "D:/webdrivers/msedgedriver.exe"  # 根据实际路径修改
    service = Service(edge_driver_path)
    driver = webdriver.Edge(service=service)
    
三、使用 Selenium 打开浏览器

下面是一个简单的 Python 代码示例,展示如何使用 Selenium 打开 Edge 浏览器并访问百度网站:

from selenium import webdriver
from selenium.webdriver.edge.service import Service
import time# 设置Edge驱动的路径
edge_driver_path = "msedgedriver.exe"  # 如果已放在Python根目录,可直接这样写# 创建Service对象
service = Service(edge_driver_path)# 创建Edge浏览器实例
driver = webdriver.Edge(service=service)try:# 打开百度网站driver.get("https://www.baidu.com")# 获取页面标题并打印title = driver.titleprint(f"当前页面标题: {title}")# 等待5秒钟,以便观察time.sleep(5)except Exception as e:print(f"发生错误: {e}")
finally:# 关闭浏览器driver.quit()

在上述代码中,我们首先导入了必要的模块,然后创建了一个 Edge 浏览器的 Service 对象,接着使用该 Service 创建了浏览器实例。通过get方法打开了百度网站,使用time.sleep让程序暂停 5 秒以便我们观察,最后使用quit方法关闭了浏览器。

让我们详细分析一下这段代码:

  1. 导入模块

    • webdriver:提供了各种浏览器的驱动类
    • Service:用于配置和启动浏览器驱动服务
    • time:用于添加延时,方便观察程序执行过程
  2. 创建浏览器实例

    • 通过Service类指定驱动路径
    • 使用webdriver.Edge创建 Edge 浏览器实例
  3. 浏览器操作

    • driver.get(url):打开指定 URL 的网页
    • driver.title:获取当前页面的标题
    • driver.quit():关闭浏览器并终止驱动服务
  4. 异常处理

    • 使用try-except-finally结构确保即使发生异常,浏览器也能被正确关闭
     四、Selenium 网页图片提取实战

下面我们通过一个实战项目,展示如何使用 Selenium 从网页上提取图片。我们以 Unsplash 网站(一个提供高质量免费图片的网站)为例,提取搜索结果中的图片链接。

from selenium import webdriver
from selenium.webdriver.edge.options import Options
import re
import requests
import time
edgetest=Options() #Option对象用于对浏览器行为与属性的配置
#binary_location指明驱动的浏览器二进制文件地址,因为用户的默认的浏览器不一定是edge浏览器
edgetest.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver=webdriver.Edge(options=edgetest)
driver.get('https://www.ptpress.com.cn/search?keyword=python&jc=')#进入人民邮电出版社界面
time.sleep(1)#让程序休眠1秒,让页面加载出来,不加可能导致页面未加载出来就退出
#正则表达式从源码中提取图片地址
ls=re.findall(r'<img src="(.+?jpg)"></div>',driver.page_source)
i=1
for url in ls:r=requests.get(url)with open('zxc\\'+str(i)+'.jpg','wb') as f:#在当前的相对路径下已经创建了zxc这个文件夹。f.write(r.content)i+=1

这个代码实现了以下功能:

1. 浏览器配置与初始化

  • 指定浏览器路径:通过Options类设置 Edge 浏览器的安装路径(默认为系统默认位置)。

  • 创建浏览器实例:启动 Edge 浏览器并准备访问网页。

2. 访问目标网页

  • 搜索关键词:打开人民邮电出版社的搜索页面,自动填入关键词python,并加载搜索结果。

  • 强制等待:使用time.sleep(1)暂停 1 秒,确保页面元素加载完成(此方法不够可靠,后续可优化)。

3. 提取图片 URL

  • 获取页面源码:通过driver.page_source获取当前页面的 HTML 代码。

  • 正则表达式匹配:使用正则表达式<img src="(.+?jpg)"></div>提取所有图片 URL。

    • 该正则假设图片标签紧跟在</div>前,且 URL 以.jpg结尾。

4. 下载并保存图片

  • 遍历 URL 列表:对每个匹配到的图片 URL,使用requests.get()发送 HTTP 请求下载图片内容。

  • 保存文件:将图片内容写入本地文件,命名为1.jpg2.jpg等,保存在当前目录下的zxc文件夹中。

http://www.lryc.cn/news/591442.html

相关文章:

  • CTF Crypto基础知识
  • python(one day)——春水碧于天,画船听雨眠。
  • Matplotlib 轴标题与刻度字号调整方法
  • SGMD辛几何模态分解 直接替换Excel运行包含频谱图相关系数图 Matlab语言!
  • 多重共线性Multicollinearity
  • pytorch小记(三十一):深入解析 PyTorch 权重初始化:`xavier_normal_` 与 `constant_`
  • cuda编程笔记(8)--线程束warp
  • imx6ull-系统移植篇9——bootz启动 Linux 内核
  • Java全栈工程师面试实录:从电商支付到AI大模型架构的深度技术挑战
  • 软件项目管理学习笔记
  • S7-1200 模拟量模块全解析:从接线到量程计算
  • FreeRTOS学习笔记——常用函数说明
  • MQTT之CONNECT报文和CONNACK报文
  • Qwen3-8B Dify RAG环境搭建
  • @fullcalendar/vue 日历组件
  • SpringCloud面试笔记
  • 【每日刷题】跳跃游戏
  • Apache DolphinScheduler介绍与部署
  • 分布式光伏发电系统中的“四可”指的是什么?
  • 解读PLM系统软件在制造企业研发管理中的应用
  • 18650锂电池点焊机:新能源制造的精密纽带
  • AR智能巡检:制造业零缺陷安装的“数字监工”
  • Git仓库核心概念与工作流程详解:从入门到精通
  • 【java面试day6】redis缓存-数据淘汰策略
  • 二刷 黑马点评 秒杀优化
  • 全面升级!WizTelemetry 可观测平台 2.0 深度解析:打造云原生时代的智能可观测平台
  • Netty-基础知识
  • 【前端如何利用 localStorage 存储 Token 及跨域问题解决方案】
  • 7.17 Java基础 | 集合框架(下)
  • 【unitrix】 6.5 基础整数类型特征(base_int.rs)