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

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.lryc.cn/news/319962.html

相关文章:

  • 【SQL】1174. 即时食物配送 II (窗口函数row_number; group by写法;对比;定位错因)
  • mvcc介绍
  • 强化PaaS平台应用安全:关键策略与措施
  • K8s 集群高可用master节点ETCD挂掉如何恢复?
  • 【Godot 4.2】常见几何图形、网格、刻度线点求取函数及原理总结
  • 如何利用POI导出报表
  • 自动部署SSL证书到阿里云腾讯云CDN
  • 【系统性】 循序渐进学C++
  • rust - 一个日志缓存记录的通用实现
  • elasticsearch(RestHighLevelClient API操作)(黑马)
  • 用尾插的思想实现移除链表中的元素
  • 【Kubernetes】k8s删除master节点后重新加入集群
  • HCIP—OSPF虚链路实验
  • RAxML-NG安装与使用-raxml-ng-v1.2.0(bioinfomatics tools-013)
  • Tomcat内存马
  • pytorch之诗词生成3--utils
  • OpenAI的ChatGPT企业版专注于安全性、可扩展性和定制化。
  • JS06-class对象
  • 深度学习1650ti在win10安装pytorch复盘
  • Node.js与webpack(三)
  • 测试覆盖率那些事
  • Etcd 介绍与使用(入门篇)
  • Docker 安装 LogStash
  • Selenium笔记
  • ChatGPT :确定性AI源自于确定性数据
  • linux驱动开发面试题
  • 【AI】Ubuntu系统深度学习框架的神经网络图绘制
  • AI推介-大语言模型LLMs论文速览(arXiv方向):2024.03.05-2024.03.10—(2)
  • AI解答——DNS、DHCP、SNMP、TFTP、IKE、RIP协议
  • 【TypeScript系列】声明合并