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

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)
                break
        username = 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_path




    def 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.kler.cn/a/272142.html

相关文章:

  • 【SpringCloud】黑马微服务学习笔记
  • 计算机网络 (52)秘钥分配
  • Open3D计算点云粗糙度(方法一)【2025最新版】
  • 2024年度总结-CSDN
  • Java 中 HashSet 集合元素的去重
  • Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件
  • 用python写网络爬虫:3.urllib库进一步的使用方法
  • MySQL_数据库图形化界面软件_00000_00001
  • 一个完整的上传文件示例
  • stable diffusion webui 搭建和初步使用
  • 生成式人工智能在金融领域:FinGPT、BloombergGPT及其未来
  • 数学建模-估计出租车的总数
  • 重拾C++之菜鸟刷算法第13篇---回溯算法
  • Linux进程管理:(六)SMP负载均衡
  • Spring Web MVC入门(3)
  • Nacos与Eureka的使用与区别
  • 【Spring 篇】SpringMVC的请求:舞台上的开端
  • RUST egui体验
  • 玩转C语言——数组初探
  • Linux下进程的调度与切换
  • 模块化项目Eclipse测试网零撸教程
  • 苍穹外卖swagger
  • python的集合应用
  • 练习8 Web [GYCTF2020]Blacklist
  • 爬虫(六)
  • 不锈钢多功能电工剥线钳分线绕线剪线剥线钳剥线压线扒皮钳子