Selenium-webdriver_manager判断是否已经下载过驱动(复用缓存驱动)

1,谷歌浏览器默认位置

在这里插入图片描述
2,ChromeDriverManager 下载的驱动位置 其中admin为机器的用户名
在这里插入图片描述

    def installDriver(self):"""判断是否需要下载driver""""""找到本机谷歌浏览器版本""""""C:\Program Files\Google\Chrome\Application\122.0.6261.112   找到名字为版本号的文件夹"""dirPath=r'C:\Program Files\Google\Chrome\Application'version='122.0.6261.112'for item in os.listdir(dirPath):if re.search(r'\d{3}.\d.\d{4}.\d{3}',item):version=re.search(r'\d{3}.\d.\d{4}.\d{3}',item).group(0)breakusername = getpass.getuser()  #获取本机driver_path = f"""C:\\Users\\{username}\\.wdm\\drivers\\chromedriver\\win64\\{version}\\chromedriver-win32\\chromedriver.exe"""if not os.path.exists(driver_path):driver_path = ChromeDriverManager().install()return driver_pathdef createDriver(self):driver_path=self.installDriver()op = webdriver.ChromeOptions()# op.add_argument('headless')op.add_argument('disable-infobars')op.add_argument('--ignore-certificate-errors')op.add_argument('--allow-insecure-localhost')op.add_argument('-ignore -ssl-errors')op.add_experimental_option('excludeSwitches', ['enable-automation'])  # 以键值对的形式加入参数prefs = {"profile.default_content_settings.popups": 1}op.add_experimental_option('prefs', prefs)script = '''Object.defineProperty(navigator, 'webdriver', {get: () => undefined})'''self.driver = webdriver.Chrome(service=Service(driver_path))self.driver.maximize_window()self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})self.driver.execute_script(script)script = '''Object.defineProperty(navigator, 'plugins', {get: () => 2})'''self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})self.driver.set_page_load_timeout(60)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity触发器的使用

1.首先建立两个静态精灵(并给其中一个物体添加"jj"标签) 2.添加触发器 3.给其中一个物体添加刚体组件(如果这里是静态的碰撞的时候将不会触发效果,如果另一个物体有刚体可以将它移除,或者将它的刚体属性设置…

做一个个人网站分几步?第一步,找个简单的模板借鉴(抄)一下

做一个个人博客第一步该怎么做? 好多零基础的同学们不知道怎么迈出第一步。 那么,就找一个现成的模板学一学呗,毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题,那就是,那些模板都,太!…

Css提高——flex布局及其相关属性

目录: 1、传统布局与flex布局的区别 2、flex的布局原理 3、flex常见的父项属性 3.1、flex-direction :设置主轴的方向 3.2、justify-content 设置主轴上的子元素排列方式 3.3、flex-wrap 设置子元素是否换行 3.4、align-items 设置侧轴上的子元素排…

【周总结】✈️✈️✈️

周总结 完成时区改造的开发 完成已提测功能的问题修改 2024/3/17 阴 不冷不热 Spring is coming soon. Its an uneasy weekend to enjoy by myself,because all things what i wanna do is made by self,(when getting up,what to eat,when to sleep...) There …

SpringBoot异常:类文件具有错误的版本 61.0, 应为 52.0的解决办法

问题: java: 无法访问org.mybatis.spring.annotation.MapperScan 错误的类文件: /D:/Program Files/apache-maven-3.6.0/repository/org/mybatis/mybatis-spring/3.0.3/mybatis-spring-3.0.3.jar!/org/mybatis/spring/annotation/MapperScan.class 类文件具有错误的…

AI预测福彩3D第12弹【2024年3月18日预测--新算法重新开始计算第9次测试】

今天继续对第一套算法进行测试。废话不多说了,直接上分析出的图表,再上结果。 最终,经过研判分析,2024年3月18日福彩3D的七码预测结果如下: 百位:3 2 4 0 1 5 8(6或9换8,重点考虑6) 十位&#x…

【C语言】linux内核软中断

一、什么是软中断? 内核中的软中断(Softirqs)和任务下半部(Tasklets)是Linux内核中用于在中断上下文之外处理中断服务的一种底层机制。这些机制解决了不能在中断服务例程(ISR)中执行耗时操作或…

服务器数据恢复—raid5热备盘上线同步数据失败的如何恢复数据

服务器数据恢复环境&故障&分析: 一台存储上有一组由多块硬盘组建的raid5阵列,该raid5阵列中的一块硬盘掉线,热备盘自动上线同步数据的过程中,raid阵列中又有一块硬盘掉线,热备盘的数据同步被中断,r…

JavaWeb06-MVC和三层架构

目录 一、MVC模式 1.概述 2.好处 二、三层架构 1.概述 三、MVC与三层架构 四、练习 一、MVC模式 1.概述 MVC是一种分层开发的模式,其中 M:Model,业务模型,处理业务 V: View,视图,界面展…

腾讯云优惠券领取的几种方法,助你降低云服务成本

随着云计算技术的广泛应用,越来越多的企业和个人选择使用云服务来降低运营成本、提高运营效率。腾讯云作为国内领先的云服务提供商,凭借其出色的性能、稳定性和安全性,赢得了广大用户的信赖。为了回馈用户,腾讯云经常推出各种优惠…

Python实现BOA蝴蝶优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算…

element el-cascader获取完整数据

<el-table-column prop"createTime" label"编辑店铺分类"><template slot-scope"scope"><el-cascaderref"cascader"v-model"scope.row.shoptypeone":options"commoditylist"placeholder"请选…

RPC 和 序列化

RPC 1 RPC调用流程 1.1 clerk客户端调用远程服务 Clerk::PutAppend() raftServerRpcUtil::PutAppend() raftServerRpcUtil是client与kvserver通信的入口&#xff0c; 包含kvserver功能的一对一映射&#xff1a;Get/PutAppend&#xff0c;通过stub对象——raftKVRpcProctoc:…

爬虫神器!使用Python一键下载网页图片,省时高效!

引言 爬虫技术在当今信息时代中扮演着重要的角色&#xff0c;可以自动化获取互联网上的数据。本教程将围绕你提供的Python爬虫代码展开&#xff0c;旨在实现自动下载图片的功能。通过这个示例&#xff0c;你将学习如何利用爬虫技术批量获取网页中的图片&#xff0c;并将其保存…

MC78L05ACDR2G线性稳压器芯片中文资料规格书PDF数据手册引脚图参数图片价格

产品概述&#xff1a; MC78L00A系列线性稳压器价格便宜&#xff0c;易于使用&#xff0c;适用于各种需要最高100mA的调节电源的应用。与大功率MC7800和MC78M00系列一样&#xff0c;这款稳压器也提供内部电流限制和高温关断&#xff0c;因此非常坚固耐用。在很多应用中&#xf…

【C语言】linux内核pci_save_state

一、中文注释 //include\linux\pci.h /* 电源管理相关的例程 */ int pci_save_state(struct pci_dev *dev);//drivers\pci\pci.c /*** pci_save_state - 在挂起前保存PCI设备的配置空间* dev: - 我们正在处理的PCI设备*/ int pci_save_state(struct pci_dev *dev) {int i;/* X…

odoo17开发教程(14):Computed Fields And Onchanges

目录 概述&#xff1a; 计算字段Computed Fields 依赖关系 实践&#xff1a; 计算总面积 计算最佳报价。 Inverse Function反函数 实践&#xff1a;计算报价的有效日期。 其他信息 Onchanges 实践&#xff1a;设置花园面积和方向值。 如何使用它们&#xff1f; 概述…

漫谈5种注册中心

01 注册中心基本概念 1.1 什么是注册中心&#xff1f; 注册中心主要有三种角色&#xff1a; 服务提供者&#xff08;RPC Server&#xff09;&#xff1a;在启动时&#xff0c;向 Registry 注册自身服务&#xff0c;并向 Registry 定期发送心跳汇报存活状态。 服务消费者&…

鸿蒙开发学习:【OpenHarmony HAR】

OpenHarmony js/ts三方库使用的是OpenHarmony静态共享包&#xff0c;即HAR(Harmony Archive)&#xff0c;可以包含js/ts代码、c库、资源和配置文件。通过HAR&#xff0c;可以实现多个模块或者多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP&#xff0c;不能独立安装运行…

Python数据分析-Matplotlib1

一、折线图的绘制 1.数据分析流程 2.运用Matplot绘制折线图 #encodingutf-8 import random from matplotlib import pyplot as plt #绘图工具库 from matplotlib import font_manager #解决中文显示问题 from cProfile import label #设置字体方式 my_font font_manager.Fon…