Selenium - 自动下载 webdriver

这篇具有很好参考价值的文章主要介绍了Selenium - 自动下载 webdriver。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

  • 很多浏览器会自动更新,但是 driver 不会自动更新。为了确保 driver 版本和浏览器匹配,可以使用第三方库 webdriver_manager

代码

  • 这个文件里封装了几个函数
    • driver_seek : 根据给定的目录,和文件名称,查找该目录下是否有这个文件
    • driver_download : 下载 webdriver 到指定目录,如果path参数不指定,会下载到 C:\Users\当前用户名 目录下,如果指定path,就下载到指定目录 —— 我因为有多个使用Selenium 的爬虫项目,所以会把 driver 下载到1个公用目录下
    • driver_test : 测试上面这两个函数是否工作正常
# !/usr/bin/env python3
# _*_ coding:utf-8 _*_
"""
@File               : init_webdriver.py
@Project            : Scrapy
@CreateTime         : 2023/1/2 17:02
@Author             : biaobro
@Software           : PyCharm
@Last Modify Time   : 2023/1/2 17:02
@Version            : 1.0
@Description        : None
    @20230207
    # 安装webdriver-manager : pip install webdriver-manager
    # webdriver-manager 在python3.11 下报错无法使用,改用python3.10 后正常
    # 这个文件只需要完成 检测目标是否存在,如果不存在就下载的任务就好了,不需要做额外的设置,应用层的设置交给应用层
    # 如果不写main 函数,被导入时就会自动执行
"""
from selenium import webdriver

# chrome, firefox, edge, IE
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service as ChromeService
import os


# from webdriver_manager.firefox import GeckoDriverManager
# from webdriver_manager.microsoft import EdgeChromiumDriverManager
# from webdriver_manager.microsoft import IEDriverManager


def driver_seek(folder_name, file_name):
    """根据输入的文件名称查找对应的文件夹有无改文件,有则返回文件路径"""
    for root, dirs, files in os.walk(folder_name):
        if file_name in files:
            # 当层文件内有该文件,输出文件地址
            path = os.path.join(root, file_name)  # r'{0}\{1}'.format(root, file_name)
            print(path)
            print('the driver has already been there. you could load it freely.')
            return path
    print(file_name + " doesn't exist in " + folder_name + ', please download it firstly.')
    return None


def driver_download(path=None):
    try:
        # 默认 webdriver 会被下载到  .home/.wdm folder
        # 本机 [C:\Users\biaob\.wdm\drivers\chromedriver\win32\97.0.4692.71\chromedriver.exe]

        # silent logs and remove them from console
        # os.environ['WDM_LOG_LEVEL'] = '0'

        # disable the blank space in first line
        # os.environ['WDM_PRINT_FIRST_LINE'] = 'False'

        # 如果没有指定path参数,就下载到项目路径
        # 如果指定,就下载到指定路径
        if path is None:
            # By default, all driver binaries are saved to user.home/.wdm folder.
            # You can override this setting and save binaries to project.root/.wdm.
            # 设置 'WDM_LOCAL' = '1' 修改设置,下载文件到项目路径
            os.environ['WDM_LOCAL'] = '1'

            # 下载地址:https://chromedriver.chromium.org/downloads
            # 老式写法
            # browser = webdriver.Chrome(executable_path=ChromeDriverManager().install())  # , options=options)

            # 新式写法
            print("driver will be downloaded into default project folder.")
            ChromeService(ChromeDriverManager().install())
        else:
            # Set the directory where you want to download and save the webdriver.
            # You can use relative and absolute paths.
            print("driver will be downloaded into specified folder.")
            path = ChromeDriverManager().install()
            print(path)
        return True
    except Exception as e:
        print(e)
        return False


def driver_test(path, url="https://www.baidu.com"):
    driver_path = driver_init()
    # option set to avoid 'data' show in address bar
    options = webdriver.ChromeOptions()
    # options.add_argument('--no-sandbox')
    # options.add_argument('--disable-dev-shm-usage')
    # options.add_argument(r"user-data-dir=data")
    # options.add_argument(r"headless")
    browser = webdriver.Chrome(service=ChromeService(path), options=options)
    browser.get(url)
    if browser.title == "百度一下,你就知道":
        print("selenium browser headless mode visit Baidu test passed.")
    elif browser.title is not None:
        print(f"selenium browser headless mode visit {url} test passed.")
    else:
        print("selenium browser headless mode test failed!")
    # quit 必须要有,否则停留后台,需要在任务管理器中手动关闭
    browser.quit()


# specify the path directly
# 指定本地目录
# driver = webdriver.Chrome('D:\Download\chromedriver_win32\chromedriver.exe')

# 用法示例
def driver_init():
    parent_directory = r'..\\'
    file_name = r'chromedriver.exe'

    driver_path = driver_seek(parent_directory, file_name)

    if driver_path is not None:
        return driver_path
    else:
        driver_download(parent_directory)
        return driver_seek(parent_directory, file_name)

运行效果

selenium webdriver下载,selenium,测试工具

 文章来源地址https://www.toymoban.com/news/detail-735546.html

到了这里,关于Selenium - 自动下载 webdriver的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安装Selenium报错解决&webdriver下载

    一、安装Selenium报错解决 在安装Selenium模块的时候就报错 ERROR: Cannot uninstall \\\'certifi\\\'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. 就试了一下pip install certifi --ignore-installed  然后就成功了(pip install Selenium #这个

    2024年02月04日
    浏览(48)
  • 自动化测试框架selenium之webdriver

    对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象,一个对象有很多的属性,我们可以通过这些属性找到对象。 注意:不管用那种方式,必须保证页面上该属性的唯一性 webdriver 提供了一系列的对象定位方法,常用的有以下几种 id name class nam

    2024年02月12日
    浏览(48)
  • 自动化测试工具-Selenium:Selenium的核心三大组件详解

    目录 1. WebDriver 1.1 WebDriver的通信方式 1.2 WebDriver的功能 1.3 W3C推荐标准 2. Grid 3. IDE Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。官方对Selenium认可的三大组件或API分别是: WebDriver、Selenium IDE、Grid。 其中,WebDriver又被称为Selenium的核心。 下面本篇文章将深度介

    2024年02月03日
    浏览(46)
  • WebDriver+Selenium实现浏览器自动化

    Selenium是一款可以自动化操作浏览器的开源项目,最初的目的是浏览器功能的自动化测试,但是随着项目的发展,人们根据它的特性也用来做一些更多的有意思的功能而不仅仅是UI的自动化测试工具。就像Selenium官方网站上描述的那样,Selenium可以自动化操纵浏览器。完了!你

    2024年02月03日
    浏览(51)
  • 【java+selenium+WebDriver】实现谷歌PDF下载(打印)功能

    selenium是一个开源的自动化测试框架,它可以模拟用户对浏览器的操作,进行自动化的操作。 接下来我将使用java+selenium+WebDriver来操作chrome来模拟用户将PDF保存到本地磁盘目录中。 1.添加selenium的jar包 2.模拟操作保存PDF等文件操作 调起浏览器的打印事件有以下两种方法: ①

    2024年02月09日
    浏览(78)
  • Python+Selenium webdriver mange用法-告别手动下载driver

    通常使用selenium时候我们需要自己单独去下载对应各浏览器版本的webdriver,并在后期针对不同操作系统(mac、windows、linux)或者不同浏览器版本都要反复选择对应版本webdriver 为了解决以上问题,webdriver-manage第三方库营运而生,它可以自动帮你识别当前运行环境下系统信息以及

    2024年02月15日
    浏览(49)
  • 自动化测试工具——Selenium详解

    Selenium是一个用于Web应用程序测试的工具。是一个开源的Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium可以直接运行在浏览器上,它支持所有主流的浏览器,支持的浏览器包括IE(7, 8,

    2024年01月20日
    浏览(62)
  • 浏览器自动化脚本 Selenium WebDriver 快速入门

    2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客 文章浏览阅读2.7k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、

    2024年03月09日
    浏览(74)
  • python自动化测试工具selenium

    selenium 是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:Selenium。相对于另外一款web自动化测试工具QTP来说有如下优点: 免费开源轻量级,不同语言只需要一个体积很小的依赖包 支持多种系统,包括Windows,Mac,Linux 支持多种浏

    2024年02月08日
    浏览(83)
  • 一文详解:自动化测试工具——Selenium

    Selenium是一个用于Web应用程序测试的工具。是一个开源的Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium可以直接运行在浏览器上,它支持所有主流的浏览器,支持的浏览器包括IE(7, 8,

    2024年01月16日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包