Python Selenium 的基本使用方法

文章目录

  • 1. 概述
  • 2. 下载ChromeDriver
  • 3. 安装Selenium
  • 4. 常见用法
    • 4.1 启动
    • 4.2 查找元素
    • 4.3 等待页面加载元素


1. 概述

Selenium 是一个用于自动化 web 浏览器的工具,它提供了一套用于测试 web 应用程序的工具和库。Selenium 最初是用于测试 web 应用程序的,但它也被广泛用于进行网络数据采集、自动化任务和网页操作等。

Selenium 支持多种编程语言,包括 Python、Java、JavaScript、C# 等,但最为常用的是使用 Python 进行 Selenium 测试和自动化。使用 Selenium,您可以编写代码来模拟用户在 web 浏览器中的操作,例如打开网页、填写表单、点击按钮、提取网页内容等。

Selenium 提供了多个工具和库,其中最常用的是 Selenium WebDriver,它允许您控制各种不同的 web 浏览器,如 Chrome、Firefox、Edge 等。通过 Selenium WebDriver,您可以编写代码来与浏览器进行交互,模拟用户在浏览器中的行为,并对 web 应用程序进行测试、数据采集和自动化任务。

2. 下载ChromeDriver

ChromeDriver 的下载方式参考这里,注意 ChromeDriver 和 Chrome 内核的版本匹配即可。

然后安装 Chrome:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

# 如果这一步报错,直接执行下一步
sudo dpkg -i ./google-chrome*.deb

sudo apt-get install -f

3. 安装Selenium

pip install selenium

4. 常见用法

4.1 启动

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

WEB_DRIVER_PATH = "/xxx/xx/chromedriver"
chrome_options = Options()
driver = webdriver.Chrome(service=Service(WEB_DRIVER_PATH), options=chrome_options)

以下是启动一些常见应用场景的 ChromeOptions 配置示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 创建ChromeOptions实例
chrome_options = Options()

# 1. 隐身模式启动
chrome_options.add_argument("--incognito")

# 2. 大窗口启动
chrome_options.add_argument("--start-maximized")

# 3. 禁用GPU渲染
chrome_options.add_argument('--disable-gpu')

# 4. 添加浏览器启动参数,例如禁用安全警告
chrome_options.add_argument('--unsafely-treat-insecure-origin-as-secure="http://example.com"')
chrome_options.add_argument('--ignore-certificate-errors')

# 5. 添加扩展程序
# 注意:extension_path应指向本地的.crx扩展程序文件
extension_path = '/path/to/your/extension.crx'
chrome_options.add_extension(extension_path)

# 6. 更改下载目录
prefs = {
    "download.default_directory": "/path/to/download/folder",
    "download.prompt_for_download": False,
    "plugins.always_open_pdf_externally": True  # 例如,总是外部打开PDF文件
}
chrome_options.add_experimental_option("prefs", prefs)

# 7. 启动无头模式(无界面运行)
chrome_options.add_argument('--headless')

# 创建Chrome浏览器实例,使用上述配置
driver = webdriver.Chrome(options=chrome_options)

# 执行网页导航或者其他操作...
driver.get('http://example.com')

# 使用完毕后关闭浏览器
driver.quit()

4.2 查找元素

(1)用 id 查找

from selenium.webdriver.common.by import By
try:
	ele = driver.find_element(By.ID, "id name")
except Exception as e:
	pass

(2)用 class 查找

from selenium.webdriver.common.by import By
try:
	# 查找第一个class名字匹配的元素
	ele = driver.find_element(By.CLASS_NAME, "class name")  # 替换 "class_name" 为实际Class名
	
	# 查找所有class名字匹配的元素
	eles = driver.find_elements(By.CLASS_NAME, "class name")
except Exception as e:
	pass

(3)用 css 查找

from selenium.webdriver.common.by import By
try:
	# 通过CSS选择器定位单个元素
	element = driver.find_element(By.CSS_SELECTOR, "#element_id" or ".class_name" or "tag_name[attr=value]"...)  # 使用实际的CSS选择器
	
	# 通过CSS选择器定位一组元素
	elements = driver.find_elements(By.CSS_SELECTOR, "your_css_selector")
except Exception as e:
	pass

(4)查找其他元素

from selenium.webdriver.common.by import By
try:
	# 查找所有div标签
	ele = driver.find_elements(By.TAG_NAME, "div")
	
	# 查找第一个a标签
	ele = driver.find_element(By.TAG_NAME, "a")
	
	# 查找第一个span标签
	ele = driver.find_element(By.TAG_NAME, "span")
except Exception as e:
	pass

4.3 等待页面加载元素

有时页面加载需要等待一定时间,如果显式的 sleep,不够灵活,可以借助selenium 的 WebDriverWait。

WebDriverWait 是 Selenium WebDriver 中用于实现隐式等待和显式等待的一种机制,它能够根据提供的条件等待元素变为可用或满足特定条件。显式等待允许你在执行下一步操作之前强制等待某个条件成立,这样可以避免因为页面元素加载不完全而导致的找不到元素或操作元素失败的问题。

使用 WebDriverWait 的基本步骤如下:

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

# 初始化WebDriver对象,这里以Chrome为例
driver = webdriver.Chrome()

# 访问某个URL
driver.get("http://www.example.com")

# 创建WebDriverWait对象,通常需要传入WebDriver实例和超时时长
wait = WebDriverWait(driver, 10)  # 这里的10表示最长等待10秒

# 使用WebDriverWait等待某个条件满足
# 例如,等待页面上某个id为'element_id'的元素可见
element = wait.until(EC.presence_of_element_located((By.ID, 'element_id')))

# 此时,element变量已经被赋值为找到的元素,可以对其进行后续操作
element.click()

# 或者等待页面标题包含特定文字
wait.until(EC.title_contains("Example"))

# 最后,关闭浏览器
driver.quit()

expected_conditions模块提供了多种内置条件:

  • presence_of_element_located((By.ID, 'element_id')):等待元素存在
  • visibility_of_element_located((By.ID, 'element_id')):等待元素可见
  • element_to_be_clickable((By.ID, 'element_id')):等待元素可见且可点击
  • title_is("Page Title"):等待页面标题为特定值
  • title_contains("Partial Title"):等待页面标题包含特定部分

通过这种方式,WebDriverWait 可以帮助我们在执行自动化脚本时更加稳定可靠,确保在进行操作之前目标元素已经准备好。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎样将excel的科学计数法设置为指数形式?

对了,这个问题中所谓的“指数形式”是指数学上书写的右上标的指数格式,能不能通过单元格设置来做这个格式的转换呢? 一、几个尝试 以下,以数字123000为例来说明。 情况1.转换成数学上的书写方式,如下图的样子&#x…

象棋教学辅助软件介绍

背景 各大象棋软件厂商都有丰富的题目提供训练,但是其AI辅助要么太弱,要么要付费解锁,非常不适合我们这些没有赞助的业余棋手自行训练,于是我需要对其进行视觉识别,和AI训练,通过开启这个辅助软件&#xf…

Linux安装和使用Android Debug Bridge(ADB)

目录 1、开发环境和工具 2、ADB是什么? 3、安装ADB 3.1、使用包管理器安装 ADB 3.2、手动安装 ADB 4、使用ADB 4.1、连接设备 4.2、执行shell命令 4.3、安装应用程序 4.4、截取屏幕截图 4.5、模拟按键和手势 4.6、上传文件到Android设备 4.7、从Android设备下载文件…

Chrome修改主题颜色

注意:自定义Chrome按钮只在搜索引擎为Google的时候出现。

2024年五一杯数学建模C题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

Civil3D 2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 Civil3D软件是一款专为土木工程设计与文档编制而打造的建筑信息模型(BIM)解决方案。它结合了AutoCAD的熟悉环境,并进行了专业定制,以满足土木工程道路与土石方解决的需求。Civil3D能…

HTML5漫画风格个人介绍源码

源码介绍 HTML5漫画风格个人介绍源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 效果截图 源码下载 HTML5漫画风格…

Java设计模式——代理模式

静态代理: Java静态代理是设计模式中的一种,它通过创建一个代理类来代替原始类,从而提供额外的功能或控制原始类的访问。 如何使用Java静态代理 要创建一个静态代理,你需要有一个接口,一个实现该接口的目标类&#…

固定测斜仪:工程观测的精密利器

在工程观测测量领域,固定测斜仪扮演着至关重要的角色。固定测斜仪,凭借其耐冲击型倾斜传感器、出色的可靠性、快速稳定的特点,以及简洁的安装和智能识别功能,已成为行业内重要工具。其输出信号为RS485数字量,可直接显示…

【C++进阶】C++中的继承

一、概述 作为C的三大特性之一封装,继承,多态 中的继承,我们在进阶部分一定要详细说明。请跟着如下的小标题进入深度学习。 二、正文 1.继承的概念及定义 首先,我们先要知道什么是继承, 继承 (inheritance)机制是面…

面试八股——集合——List

主要问题 数组 如果数组索引从0开始时,数组的寻址方式为: 如果数组索引从1开始时,数组的寻址方式为: 此时对于CPU来说增加了一个减法指令,降低寻址效率。 ArrayList⭐ ArrayList构造函数 尤其说一下第三个构造函数流…

手撸词法分析器(C/C++)

手撸词法分析器(C/C) 一.背景二.什么是词法分析器?三.代码四.思考 一.背景 这学期开设了编译原理,要求写个基本的词法分析器。所以博主就自己写了一份代码,也比较简单基础。 二.什么是词法分析器? 简单来…

实时采样与等效采样与带通采样的介绍和特点和区别

理解实时采样、等效采样和带通采样是理解数字信号处理中的基本概念。在开始深入探讨它们的特点和区别之前,让我们首先对它们进行简要介绍。 实时采样 实时采样,适用对于采样率要求不是很高的情况,实时信号的好处是获得信号可以直接使用&…

十种排序方法

文章目录 前言一、选择排序1. 原理讲解2. 代码示例3. 总结 二、插入排序1.原理讲解2.代码示例3. 总结 三、归并排序1. 原理讲解2. 代码示例3. 总结 四、快速排序1. 原理讲解2. 代码示例 五、堆排序1. 原理讲解2. 代码示例 六、希尔排序1. 原理讲解2. 代码示例 七、冒泡排序1. 原…

CSS3 伪元素与伪类选择器区别、详解与应用实例

伪元素与伪类两者都是通过在选择器后附加一个特定的关键字来定义,遵循相似的语法规则,并在 CSS 规则块中设置相应的样式。伪元素 能够通过 content 属性添加或替换内容。例如,:before 和 :after 可以插入文本、图像或其他生成的内容。伪类 仅…

如何安装MacOS的虚拟机?mac安装虚拟机的步骤 虚拟机安装MacOS VMware Fusion和Parallels Desktop19

要在Mac上运行MacOS的虚拟机,常用的方法是使用虚拟化软件如VMware Fusion或Parallels Desktop。 以下是安装MacOS的虚拟机的主要步骤: 1. 检查系统要求:确定您的Mac硬件和操作系统满足安装要求。您需要一台具备足够性能的Mac,并…

NLP学习(1)-搭建环境

前言 仅记录学习笔记,如有错误欢迎指正。 环境搭建 一、环境软件安装: 1、Anaconda安装(一款可以同时创建和管理多个python环境的软件) (1) 安装链接: https://blog.csdn.net/m0_61531676/article/details/126290…

04 MySQL --DQL 专题--Union、exists

1. UNION、UNION ALL UNION 关键字的作用? 合并两个或多个 SELECT 语句的结果。发挥的作用与 or 非常相似 UNION关键字生效的前提? 每个 SELECT 语句必须拥有相同数量的列。每个 SELECT 语句中的列的顺序必须相同。列必须拥有相似的数据类型。 SELEC…

ASP.NET Core 标识(Identity)框架系列(四):闲聊 JWT 的缺点,和一些解决思路

前言 前面的几篇文章讲了很多 JWT 的优点,但作为技术人员都知道,没有一种技术是万能的 “银弹”,所谓有矛就有盾,相比 Session、Cookie 等传统的身份验证方式,JWT 在拥有很多优点的同时,也有着不可忽视的缺…

第二部分 Python提高—GUI图形用户界面编程(五)

事件处理 文章目录 鼠标和键盘事件多种事件绑定方式汇总组件对象的绑定组件类的绑定 一个GUI 应用整个生命周期都处在一个消息循环(event loop) 中。它等待事件的发生,并作出相应的处理。 Tkinter 提供了用以处理相关事件的机制. 处理函数可被绑定给各个控件的各种…
最新文章