Selenium手动和自动两种方式启动Chrome驱动
1. 自动启动chrome驱动(已经安装了Selenium库和Chrome驱动)
要使用Selenium自动跟随自带的Chrome驱动,你需要首先确保你已经安装了Selenium库和Chrome驱动。然后,你可以按照以下步骤进行操作:
- 导入必要的库:
from selenium import webdriver
- 创建一个Chrome WebDriver实例:
driver = webdriver.Chrome()
这将自动根据系统中安装的Chrome浏览器版本使用正确的驱动程序。
- 使用WebDriver执行自动化操作,例如访问网页、点击元素等:
driver.get("https://www.example.com") # 访问一个网页示例# 执行其他自动化操作...
通过调用get()
方法,你可以让WebDriver打开指定的URL,并加载对应的页面。
- 最后,关闭WebDriver:
driver.quit()
这将关闭浏览器并结束WebDriver的进程。
下面是一个完整示例代码:
from selenium import webdriver# 创建Chrome WebDriver实例
driver = webdriver.Chrome()# 访问一个网页示例
driver.get("https://www.example.com")# 执行其他自动化操作...# 关闭WebDriver
driver.quit()
你可以根据自己的需求,在执行自动化操作之前和之后,添加相应的代码来修改或扩展操作。
请注意,为了正常运行,你需要安装Selenium库和与你的Chrome浏览器版本匹配的Chrome驱动程序。确保将Chrome驱动程序所在的目录添加到系统的环境变量中,或者在代码中指定驱动程序的路径。
2. 手动启动chrome驱动
如果你想手动指定使用浏览器的驱动程序,可以按照以下步骤操作:
-
首先,下载适用于你的Chrome浏览器版本的Chrome驱动程序。你可以从以下链接下载对应的驱动程序:https://sites.google.com/a/chromium.org/chromedriver/downloads
-
本地镜像下载驱动地址:https://registry.npmmirror.com/binary.html?path=chromedriver/
-
将下载的驱动程序解压缩到一个你希望存放驱动程序的目录中。
-
在代码中指定使用特定的驱动程序路径,例如:
from selenium import webdriver# 指定Chrome驱动程序的路径
driver_path = "path/to/chromedriver"# 创建Chrome WebDriver实例,并指定驱动程序路径
driver = webdriver.Chrome(executable_path=driver_path)# 执行自动化操作...
将 path/to/chromedriver
替换为你实际的驱动程序路径。
- 执行其他自动化操作,如访问网页、点击元素等:
driver.get("https://www.example.com") # 访问一个网页示例# 执行其他自动化操作...
- 最后,关闭WebDriver:
driver.quit()
这样,你就可以手动指定使用浏览器的驱动程序来进行自动化操作了。
请确保下载的驱动程序与你的Chrome浏览器版本匹配,以确保正常运行。
3. 实例
“”"
下载qq到放到指定文件夹
“”"
一、前提
注意:selenium的使用方式和版本有很大的关系,例如selenium版本为3.141.0,会有
find_element_by_id()/ find_element_by_name()/find_element_by_class__name()等八大元素定位的方法
本次演示的selenium版本为4.8.3,故没有上述八大元素的写法,通用写法为:
先导包 from selenium.webdriver.common.by import By
再定位 browser.find_element(By.ID,'kw')/browser.find_element(By.NAME,'wd') 这样的写法
二、操作步骤
1.装包
需要用到的第三方包urllib3、selenium,安装方式例如:pip install selenium
如果需要特定版本,可以镜像安装:
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
3.1驱动安装
3.1.1自动安装(使用用外网可以访问的场景)
import time
from selenium import webdriver
# 需要用到第三方库webdriver_manager
from webdriver_manager.chrome import ChromeDriverManagerbrowser = webdriver.Chrome(ChromeDriverManager().install())
# 打开网址
browser.get('https://cn.bing.com')
time.sleep(3)
3.1.2 手动安装(适用于无法连接公网时)
import timefrom selenium import webdriver
# 定位元素用
from selenium.webdriver.common.by import By
# 模拟回车用
from selenium.webdriver.common.keys import Keys
# 驱动的下载位置:https://registry.npmmirror.com/binary.html?path=chromedriver/
# 下载什么版本的驱动呢?首先查到你浏览器的版本,下载的驱动应为跟你浏览器版本一致或者最接近的版本,在上面链接中通常选择32位的,例如"chromedriver_win32.zip"
# 驱动位置的写法,也和selenium的版本有很大关系
browser = webdriver.Chrome(executable_path=r"D:chromedriver.exe")
# 定义下载的位置
#设置1
options = webdriver.ChromeOptions()
# 更改下载路径
# 如果该路径不存在会自动创建
prefs = {"download.default_directory":'C:\Download_test','download.prompt_for_download':False}新加一条,不加载图片prefs = {"download.default_directory":'C:\Download_test','download.prompt_for_download':False,"profile.managed_default_content_settings.images":2}设置2,将创建的下载部分的设置添加到option中
options.add_experimental_option('prefs',prefs)
# 打开网址
# browser.get('https://cn.bing.com/')
# 强制等待3秒
# 最大窗口
browser.maximize_window()
time.sleep(3)browser.get('https://im.qq.com/pcqq')
驱动下载位置:https://registry.npmmirror.com/binary.html?path=chromedriver/
4.实战技巧
下面三行代码解决:下载过程中出现"此类型的文件可能会损害您的计算机,请问您是选择保留还是舍弃"
browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': "C:\Download_test"}}
command_result = browser.execute("send_command", params)
browser.find_element(By.CLASS_NAME,'download').click()
向下滑动(方法一)
js_button = "window.scrollTo(0,1000) "
browser.execute_script(js_button)
time.sleep(3)
向下滑动(方法二)元素聚焦
time.sleep(3)
try:target = browser.find_element(By.XPATH,'//*[@id="app"]/div[4]/div[2]/div[1]/h3')browser.execute_script("arguments[0].scrollIntoView();",target)
except:passtime.sleep(100)
browser.quit()
补充
“”"
使用selenium4的痛点:
1.网上资料较少,很多selenium3方法不可用
2.selenium3的下滑页面方法失效
“”"
相关文章:
Selenium手动和自动两种方式启动Chrome驱动
1. 自动启动chrome驱动(已经安装了Selenium库和Chrome驱动) 要使用Selenium自动跟随自带的Chrome驱动,你需要首先确保你已经安装了Selenium库和Chrome驱动。然后,你可以按照以下步骤进行操作: 导入必要的库: from selenium imp…...
《PostgreSQL 开发指南》第32篇 物化视图
物化视图概述 物化视图(Materialized View)是 PostgreSQL 提供的一个扩展功能,它是介于视图和表之间的一种对象。 物化视图和视图的最大区别是它不仅存储定义中的查询语句,而且可以像表一样存储数据。物化视图和表的最大区别是它…...
【RocketMQ】快速入门
文章目录 消费模式同步消息异步消息单向消息延迟消息批量消息顺序消息事务消息Tag标签和Key键Tag的使用Key的使用 首先引入rocketmq的依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><ve…...

AB跳转轮询:让你的独立站收款智能化
独立站在近两年成为跨境电商的热门布局之一,特别是在亚马逊封号潮后,许多卖家开始转向独立站运营。然而,在迅速发展的同时,也不可避免地出现了一些问题,比如很多卖家的资金经常被不同程度地冻结,好不容易出…...

所有用户都能使用sudo吗
是的,Linux系统中的普通用户可以通过配置访问 sudo 命令来获得超级用户(root)权限的临时访问权。这使得普通用户可以在需要时执行需要管理员权限的操作,而无需永久性地切换到超级用户账户。 通过 sudo 命令,系统管理员…...

【广州华锐视点】VR警务教育实训系统模拟真实场景进行实践训练
随着科技的发展,虚拟现实技术在教育领域得到了广泛的应用。VR警务教育实训系统就是其中的一种应用,该系统由广州华锐互动开发,可以模拟真实的警务场景,让学生通过虚拟现实技术进行实践训练,提高学生的实践能力和技能水…...
【深入浅出C#】章节 7: 文件和输入输出操作:处理文本和二进制数据
文件和输入输出操作在计算机编程中具有重要性,因为它们涉及数据的持久化存储和交互。数据可以是不同类型的,例如文本、图像、音频、视频和二进制数据。这些不同类型的数据具有不同的存储需求。 文本数据是最常见的数据类型之一,用于存储和传输…...

Matlab中图例的位置(图例放在图的上方、下方、左方、右方、图外面)等
一、图例默认位置 默认的位置在NorthEast r 10; a 0; b 0; t0:0.1:2.1*pi; xar*cos(t); ybr*sin(t); A1plot(x,y,r,linewidth,4);%圆 hold on axis equal A2plot([0 0],[1 10],b,linewidth,4);%直线 legend([A1,A2],圆形,line)二、通过Location对legend的位置进行改变 变…...

【算法学习】两数之和II - 输入有序数组
题目描述 原题链接 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 < index1 < …...

聚观早报|京东称在技术投入没有止境;木蚁机器人完成B2轮融资
【聚观365】8月18日消息 京东零售CEO表示在技术上投入没有止境 木蚁机器人完成B2轮超亿元融资 耐能推出AI芯片KL730 三星电子泰勒晶圆厂首家客户是AI半导体厂商 韩国新能源汽车7月出口额同比大增36% 京东零售CEO表示在技术上投入没有止境 近日,京东零售CEO辛利…...

C语言:选择+编程(每日一练)
目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:尼科彻斯定理 示例1 题二:等差数列 示例2 本人实力有限可能对一些地方解释和理解的不够清晰&…...
信道数据传输速率、码元传输速率、调制速度,信号传播速度之间的关系
1、信道数据传输速率(bit/s) 举例:移动通信中的数据传输速率。假设你的手机连接到4G网络,该网络的最大理论数据传输速率为100 Mbps。这意味着在理想情况下,你的手机可以以每秒100兆比特的速度传输数据。 2、码元传输速…...
docker的使用方法总结
Docker是一个非常强大的工具,它可以用于创建、部署和运行应用程序。以下是一些docker相关的常用指令, 1、查看docker版本 docker version 2、查看正在运行的Docker容器 docker ps 3、查看所有的docker容器(包括没有运行的容器࿰…...

【C#】条码管理操作手册
前言:本文档为条码管理系统操作指南,介绍功能使用、参数配置、资源链接,以及异常的解决等。思维导图如下: 一、思维导图 二、功能操作–条码打印(客户端) 2.1 参数设置 功能介绍:二维码图片样…...

RabbitMq-发布确认高级(避坑指南版)
在初学rabbitMq的时候,伙伴们肯定已经接触到了“发布确认”的概念,但是到了后期学习中,会接触到“springboot”中使用“发布确认”高级的概念。后者主要是解决什么问题呢?或者是什么样的场景引出这样的概念呢? 在生产环…...

Blender增强现实3D模型制作指南【AR】
推荐:用 NSDT编辑器 快速搭建可编程3D场景 将静态和动画 3D 内容集成到移动增强现实 (AR) 体验中是增强用户沉浸感和参与度的高效方法。 然而,为 AR 创建 3D 对象可能相当艰巨,尤其是对于那些缺乏 3D 建模经验的人来说。 与添加视频或照片 AR…...

Java查看https证书过期时间(JKS,CERT)
在这里需要使用X.509 证书的抽象类 X509Certificate 。此类提供了一种访问 X.509 证书所有属性的标准方式。 这些证书被广泛使用以支持 Internet 安全系统中的身份验证和其他功能。常见的应用包括增强保密邮件 (PEM)、传输层安全 (SSL)、用于受信任软件发布的代码签名和安全电…...

关于vue,记录一次修饰符.stop和.once的使用,以及猜想。
内置指令 | Vue.js 在vue的api里,关于v-on有stop和once两个事件标签。 .stop - 调用 event.stopPropagation()。.once - 最多触发一次处理函数。 原有主要代码和页面效果 (无stop和once): ...<div class"div" click"di…...

解决git reset --soft HEAD^撤销commit时报错
今天在使用git回退功能的时候,遇到以下错误: 解决git reset --soft HEAD^撤销commit时报错 问题: 在进行完commit后,想要撤销该commit,于是使用了git reset --soft HEAD^命令,但是出现如下报错࿱…...
【BASH】回顾与知识点梳理(三十四)
【BASH】回顾与知识点梳理 三十四 三十四. 认识系统服务(二)34.1 systemctl 针对 service 类型的配置文件systemctl 配置文件相关目录简介systemctl 配置文件的设定项目简介[Unit] 部份[Service] 部份[Install] 部份 两个 vsftpd 运作的实例多重的重复设…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...

工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...
k8s从入门到放弃之Pod的容器探针检测
k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...