Selenium自动化工具集 - 完整指南和使用教程

news2024/12/30 3:14:54

文章目录

  • Selenium 的概述:
  • Selenium 的安装与环境配置:
  • Selenium WebDriver 的基本概念:
  • 定位元素的方法:
  • 常用操作方法:
      • 获取所有的 cookie:
      • 获取指定名称的 cookie:
      • 添加 cookie:
      • 删除指定名称的 cookie:
      • 删除所有的 cookie:
      • 设置 cookie 的有效期:
  • Selenium常用的操作方法
  • 处理浏览器窗口和弹出框:
  • 处理表单和下拉列表:
  • 高级技巧与解决方案:
  • 浏览器操作和页面处理:
  • 完结

Selenium 的概述:

在这里插入图片描述

Selenium 是一个用于自动化浏览器操作的工具集。它通过模拟用户在浏览器中的行为,如点击、输入、表单提交等,来实现自动化测试和网页数据抓取等功能。Selenium 针对不同的浏览器提供了不同的 WebDriver 接口,如 ChromeDriver、GeckoDriver(Firefox)、WebDriver(Safari)等。

Selenium 的安装与环境配置:

在这里插入图片描述

以下是基本的安装和环境配置步骤:

  • 安装 Python 和 pip:确保已经安装了 Python,并使用以下命令验证安装是否成功:
python --version
  • 安装 Selenium:使用 pip 命令安装 Selenium,运行以下命令:
pip install selenium
  • 下载浏览器驱动程序:根据你所使用的浏览器类型和版本,下载相应的浏览器驱动程序。常见的浏览器驱动程序有 ChromeDriver、GeckoDriver(Firefox)、WebDriver(Safari)等。
  • 将驱动程序添加到环境变量:将下载的驱动程序所在的路径添加到系统的环境变量中,这样 Selenium 才能找到并使用该驱动程序。

Selenium WebDriver 的基本概念:

在这里插入图片描述

Selenium WebDriver 是 Selenium 的核心组件,它提供了一系列 API 接口,用于与浏览器进行交互。在使用 WebDriver 之前,需要实例化一个 WebDriver 对象,并指定要使用的浏览器和驱动程序。以下是示例代码:

from selenium import webdriver

# Chrome 浏览器示例
driver = webdriver.Chrome("path/to/chromedriver.exe")

# Firefox 浏览器示例
driver = webdriver.Firefox("path/to/geckodriver.exe")

定位元素的方法:

在这里插入图片描述

Selenium 提供多种方式来定位页面上的元素。常见的定位方法包括:

  • 通过 ID 定位元素:
element = driver.find_element_by_id("element_id")
  • 通过 XPath 定位元素:
element = driver.find_element_by_xpath("//tag[@attribute='value']")
  • 通过 CSS 选择器定位元素:
element = driver.find_element_by_css_selector("tag[attribute='value']")
  • 通过链接文本定位元素:
element = driver.find_element_by_link_text("link_text")
  • 通过部分链接文本定位元素:
element = driver.find_element_by_partial_link_text("partial_link_text")
  • 通过标签名定位元素:
element = driver.find_element_by_tag_name("tag_name")
  • 通过类名定位元素:
element = driver.find_element_by_class_name("class_name")
  • 通过名称定位元素:
element = driver.find_element_by_name("name")

常用操作方法:

在这里插入图片描述

获取所有的 cookie:

cookies = driver.get_cookies()

该方法返回一个列表,包含当前页面的所有 cookie。每个 cookie 都以字典的形式表示,包括名称、值、域名、路径等信息。

获取指定名称的 cookie:

cookie = driver.get_cookie("cookie_name")

使用该方法可以获取指定名称的 cookie。返回的结果是一个字典,包含 cookie 的各个属性。

添加 cookie:

cookie = {"name": "cookie_name", "value": "cookie_value"}
driver.add_cookie(cookie)

使用该方法可以添加一个新的 cookie。需要提供一个包含 cookie 名称和值的字典对象。

删除指定名称的 cookie:

driver.delete_cookie("cookie_name")

该方法用于删除指定名称的 cookie。

删除所有的 cookie:

driver.delete_all_cookies()

使用该方法可以删除当前页面的所有 cookie。

设置 cookie 的有效期:

driver.add_cookie({"name": "cookie_name", "value": "cookie_value", "expires": "expiry_date"})

可以通过给 cookie 字典对象添加 "expires" 属性,并指定有效期来设置 cookie 的过期时间。"expiry_date" 的格式可以是时间戳或日期字符串。

Selenium常用的操作方法

  • 输入文本:
element.send_keys("text")
  • 单击元素:
element.click()
  • 获取元素属性:
attribute_value = element.get_attribute("attribute")
  • 页面导航:
# 打开指定 URL
driver.get("https://www.example.com")

# 返回上一个页面
driver.back()

# 前进到下一个页面
driver.forward()

处理浏览器窗口和弹出框:

在 Selenium 中,可以使用以下方法处理浏览器窗口切换和处理弹出框:

  • 窗口切换:
# 切换到指定窗口
driver.switch_to.window("window_handle")
  • 弹出框处理:
# 切换到弹出框
alert = driver.switch_to.alert

# 接受弹出框
alert.accept()

# 关闭弹出框
alert.dismiss()

处理表单和下拉列表:

Selenium 提供了相应的方法来处理表单字段和下拉列表:

  • 输入文本到表单字段:
element.send_keys("text")
  • 选择下拉列表选项:
from selenium.webdriver.support.ui import Select

select = Select(driver.find_element_by_id("select_id"))

# 通过可见文本选择选项
select.select_by_visible_text("option_text")

# 通过值选择选项
select.select_by_value("option_value")

高级技巧与解决方案:

  • 等待页面加载:使用显示等待或隐式等待来等待页面加载完成。以下是示例代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 显示等待,等待元素可见
element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.ID, "element_id"))
)

# 隐式等待,全局等待
driver.implicitly_wait(10)
  • 处理多窗口切换:使用 window_handles 属性获取所有窗口句柄,并使用 switch_to.window() 方法切换窗口。以下是示例代码:
# 获取当前窗口句柄
current_handle = driver.current_window_handle

# 获取所有窗口句柄
all_handles = driver.window_handles

# 切换到新窗口
for handle in all_handles:
    if handle != current_handle:
        driver.switch_to.window(handle)
        break
  • 处理文件上传和下载:使用 send_keys() 方法指定文件路径来上传文件,或使用浏览器设置来配置文件下载。以下是示例代码:
# 文件上传
driver.find_element_by_id("file_input").send_keys("path/to/file")

# 文件下载
# 可以将浏览器的下载目录设置为指定路径
  • 处理页面滚动:使用 JavaScript 执行滚动操作。以下是示例代码:
# 滚动到页面底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")

浏览器操作和页面处理:

  • 最大化浏览器窗口:
driver.maximize_window()

这个方法用于将浏览器窗口最大化,以便更好地查看网页内容。

  • 截取屏幕截图:
driver.save_screenshot("path/to/screenshot.png")

使用这个方法可以将整个浏览器窗口的屏幕截图保存为指定路径的图像文件。

  • 刷新页面:
driver.refresh()

该方法用于刷新当前页面,相当于点击浏览器的刷新按钮。

  • 获取当前页面的标题:
title = driver.title

使用该方法可以获取当前页面的标题,并将其存储在变量 title 中。

  • 获取当前页面的 URL:
url = driver.current_url

这个方法返回当前页面的 URL,并将其存储在变量 url 中。

  • 在文本框中清除文本:
text_field.clear()

该方法用于清除文本框中的文本内容,适用于 <input><textarea> 元素。

  • 获取元素的文本内容:
text = element.text

使用该方法可以获取特定元素的文本内容,并将其存储在变量 text 中。这对于提取网页上的文本信息非常有用。

  • 获取元素的 CSS 属性:
css_property = element.value_of_css_property("property")

这个方法允许你获取特定元素的 CSS 属性值。你需要将 "property" 替换为要获取的具体属性名称,比如 "color""font-size" 等。获取到的属性值将存储在变量 css_property 中。

完结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/677381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaFX应用开发教程——基于JDK9与NetBeans实现

ISBN: 978-7-302-61499-9 作者&#xff1a;宋波 页数&#xff1a;257页 阅读时间&#xff1a;2023-06-18 推荐指数&#xff1a;★★★★★ 《JavaFX应用开发教程——基于JDK9与NetBeans实现》 是目前市面上讲解Java桌面开发为数不多的教材 &#xff08;JavaFX是Java语言的下一代…

Flutter系列(十二)实现购物车和提交订单页

基础工程&#xff1a; Flutter系列&#xff08;十一&#xff09;实现商城首页和商品详情页_摸金青年v的博客-CSDN博客 Flutter系列&#xff08;四&#xff09;底部导航顶部导航图文列表完整代码_摸金青年v的博客-CSDN博客 一、前言 本文用flutter实现购物车和提交订单页&#x…

【裸机开发】认识中断向量表(设置中断向量偏移的原因)

之前的LED驱动不存在中断&#xff0c;也就不包含中断的初始化。如果程序包含了中断&#xff0c;我们应还需要初始化哪些内容&#xff1f;要解决这个问题&#xff0c;我们需要先了解一个中断系统包含了哪些内容。 ① 中断向量表&#xff1a;描述中断对应的中断服务函数&#xf…

数据结构——栈的实现(动态增长版本)

堆栈&#xff08;stack&#xff09;又称为栈或堆叠&#xff0c;是计算机科学中的一种抽象资料类型&#xff0c;只允许在有序的线性资料集合的一端&#xff08;称为堆栈顶端&#xff0c;top&#xff09;进行加入数据&#xff08;push&#xff09;和移除数据&#xff08;pop&…

【软件架构】流水线设计模式

流水线模式 流水线模式是一种软件设计模式&#xff0c;它提供了构建和执行一系列操作的能力。 此模式最好与插件模式结合使用&#xff0c;以便在应用程序启动时动态构建流水线。 顺序 流水线的最基本实现是一个简单的操作序列。 public interface IOperation<T>{void …

【学习笔记】关于transformer

1.Embedding 一文读懂Embedding的概念&#xff0c;以及它和深度学习的关系 - 知乎 one-hot编码当矩阵过于稀疏时计算开销大&#xff0c;于是加上Embedding层&#xff0c;通过Embedding层&#xff08;矩阵乘法&#xff09;实现降维。 Embedding层将一个一个词&#xff08;词源…

Spring Boot 如何使用 Spring Security 进行认证和授权

Spring Boot 如何使用 Spring Security 进行认证和授权 在 Web 应用程序中&#xff0c;认证和授权是非常重要的功能。Spring Security 是一个基于 Spring 框架的强大的安全框架&#xff0c;它提供了完整的认证和授权解决方案&#xff0c;并且可以轻松地集成到 Spring Boot 应用…

gtk_table_attch与gtk_grid_attach的区别

gtk_table_attch与gtk_grid_attach的区别 button gtk_button_new_with_label (“Short fat button”); gtk_table_attach (GTK_TABLE (table), button, 0, 2, 3, 4, xoptions, yoptions, 0, 0); 0—2–3—4 左 右 上 下 /* 横线从左边的0移到右边的2&#xff0c;竖线从上边的…

3 python进阶篇

文章目录 面向对象类属性和类方法类属性类方法静态方法 单例模式__new__ 方法类实现单例模式 异常 、模块和包异常自定义异常 模块和包模块的搜索顺序包的init文件发布模块&#xff08;了解&#xff09; 文件seek文件/目录的常用管理操作eval函数 补充性知识位运算小技巧 参考我…

软考A计划-系统集成项目管理工程师-一般补充知识-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

【LeetCode热题100】打卡第27天:二叉树的前序、中序、后序遍历

文章目录 【LeetCode热题100】打卡第27天&#xff1a;二叉树的前序、中序、后序遍历⛅前言&#x1f4d5;二叉树的前序遍历&#x1f512;题目&#x1f511;题解 &#x1f4d5;二叉树的中序遍历&#x1f512;题目&#x1f511;题解 &#x1f4d5;二叉树的后序遍历&#x1f512;题…

(万字长文)React 18 源码与原理解读 —— 看这一篇就够了

写在专栏开头&#xff08;叠甲&#xff09; 作者并不是前端技术专家&#xff0c;也只是一名喜欢学习新东西的前端技术小白&#xff0c;想要学习源码只是为了应付急转直下的前端行情和找工作的需要&#xff0c;这篇专栏是作者学习的过程中自己的思考和体会&#xff0c;也有很多参…

django中模板的使用

django中模板的使用 第一步 创建模板文件夹第二步 把模板存放进去第三步 把模板路径 加入到setting.py第四步 在视图函数处理第五步 路由挂载第六步 网页访问 第一步 创建模板文件夹 在项目的同层级下 新建模板文件夹 第二步 把模板存放进去 index.html <!DOCTYPE html&…

【Docker】一文了解Docker

文章目录 什么是Docker?为什么要使用Docker&#xff1f;与虚拟机的比较Docker架构Docker使用场景Docker安装阿里云镜像加速器1、登录阿里云2、找到镜像加速器3、配置使用 如今Docker的使用已经非常普遍&#xff0c;特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩…

C++ 自己动手实现简单的文件操作 (2023.6.23)

C 自己动手实现简单的文件操作 2023.6.23 引言1、文件简介2、各式各样的文件格式2.1 不同类型文件的扩展名2.1.1 文本文件2.1.2 数据文件2.1.3 音频文件2.1.4 视频文件2.1.5 电子书文件2.1.6 3D图像文件2.1.7 位图文件2.1.8 矢量图文件2.1.9 相机原始文件2.1.10 页面布局文件2.…

自监督对比学习框架SimCLR原理

目录 一、前言 人工智能发展近况 对比学习 二、数据集介绍 STL-10数据集 三、无监督图像表征对比学习 SimCLR SimCLR算法基本原理 数据增强与正负样本匹配 编码器 损失函数 对比学习全过程 四、有监督的图像下游任务迁移 替换下游任务网络层 有监督训练 五、实…

环境配置 | Git的安装及配置[图文详情]

Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从小到大的项目版本管理。下面介绍了基础概念及详细的用图文形式介绍一下git安装过程. 目录 1.Git基础概念 2.Git的下载及安装 3.常见的git命令 Git高级技巧 Git与团队协作 1.Git基础概念 仓库&#…

Charm-Crypto在Anaconda虚拟环境下的安装教程--基于Ubuntu20.04

第零步 VMware虚拟机设置和安装Anaconda虚拟环境 因为后面要编译源码&#xff0c;所以最好把CPU设置为最大&#xff0c;例如我的电脑是4核8线程&#xff0c;则&#xff1a; 关于Anaconda虚拟环境&#xff0c;这里不再赘述&#xff0c;后面都假设已经安装好虚拟环境&#xff0c;…

包装类--Math 类--Arrays 类--System 类

包装类–Math 类–Arrays 类–System 类 包装类 包装类的分类 包装类和基本数据的转换 演示包装类和基本数据类型的相互转换&#xff0c;这里以int和Integer演示。 1&#xff09;jdk5前的手动装箱和拆箱方式&#xff0c;装箱&#xff1a;基本类型&#xff0d;>包装类型&…

OpenAI收费标准,ChatGPT调用须知!

OpenAI收费标准&#xff0c;ChatGPT调用须知&#xff01; 免费镜像站价格说明GPT4GPT3.5图片模型如何付费 免费镜像站 ChatGPT有很多镜像站&#xff0c;需要输入API-KEY才可以使用&#xff0c;镜像站不会进行收费&#xff0c;而是OpenAI会对您进行收费。本文主要说明OpenAI的收…