Selenium webdriver_manager descarga automáticamente el controlador correspondiente según la versión del navegador

Prefacio

  • ¿Qué es webdriver_manager?

webdriver_manager es una biblioteca en Python para administrar controladores web. Su función es descargar y configurar automáticamente controladores web para diferentes navegadores (como Chrome, Firefox, Edge, etc.) para utilizar estos navegadores en pruebas automatizadas.

Al realizar pruebas de Selenium, se requiere un controlador web que coincida con el navegador para controlar y operar el navegador. webdriver_manager le proporciona una manera sencilla de detectar automáticamente la versión del navegador requerido y descargar el controlador web correspondiente. De esta manera, no necesita descargar ni configurar manualmente el controlador web, lo que puede reducir la carga y mejorar la confiabilidad y la capacidad de mantenimiento de la prueba.

1. Importar módulo

pip install webdriver_manager
pip install Selenium

2. Uso de Chrome

# Selenium4.0以下版本使用该方法
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# 使用 ChromeDriverManager 安装 ChromeDriver,并返回驱动程序的路径
driver_path = ChromeDriverManager().install()
# 打印驱动程序路径
print(driver_path)

# 创建 Chrome WebDriver,并指定驱动路径
driver = webdriver.Chrome(executable_path=driver_path)
# 打开百度网页
driver.get("https://www.baidu.com")
# Selenium4.0以上版本使用该方法
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 使用 ChromeDriverManager 安装 ChromeDriver,并返回驱动程序的路径
driver_path = ChromeDriverManager().install()
# 打印驱动程序的路径
print(driver_path)

# 创建 ChromeDriver 服务,并指定驱动程序的路径
service = Service(driver_path)
# 创建 Chrome WebDriver,并指定服务
driver = webdriver.Chrome(service=service)
# 打开百度网页
driver.get("https://www.baidu.com")
  • Descargue el controlador en el directorio especificado
# Selenium4.0以上版本使用该方法
import os
import shutil
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 指定驱动目标位置
folder_path = r'C:\Users\admin\Desktop\run'
# 路径拼接
file_path = os.path.join(folder_path, 'chromedriver.exe')

# 使用ChromeDriverManager安装ChromeDriver,并获取驱动程序的路径
download_driver_path = ChromeDriverManager().install()
# 复制文件到目标位置
shutil.copy(download_driver_path, folder_path)

# 创建Chrome WebDriver,并指定驱动路径
driver = webdriver.Chrome(service=Service(file_path))
# 打开百度网页
driver.get("https://www.baidu.com")
  • El siguiente código es para determinar si la versión de Google Chrome y la versión del controlador de Google son consistentes. Si son inconsistentes, descárguelas nuevamente.
# Selenium4.0以上版本使用该方法
import os
import shutil
import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager


def determine_google_drive():
    """判断谷歌驱动版本是否和谷歌浏览器版本一致"""
    # 谷歌浏览器可执行文件的完整路径
    chrome_path = r'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'

    # 指定谷歌驱动目标位置
    folder_path = r'C:\Users\admin\Desktop\run'
    # 驱动名称
    file_name = 'chromedriver.exe'
    # 路径拼接
    file_path = os.path.join(folder_path, file_name)

    if os.path.exists(file_path):
        # 获取chromedriver.exe版本(谷歌浏览器驱动)
        result = subprocess.run([file_path, '--version'], capture_output=True, text=True)
        driverversion = '.'.join(result.stdout.strip().split(' ')[1].split('.')[:-1])

        # 获取chrome.exe版本(谷歌浏览器)
        command = f'wmic datafile where name="{
      
      chrome_path}" get Version /value'
        result_a = subprocess.run(command, capture_output=True, text=True, shell=True)
        output = result_a.stdout.strip()
        chromeversion = '.'.join(output.split('=')[1].split('.')[0:3])

        # 判断版本是否一致,不一致就重新下载
        if driverversion != chromeversion:
            # 使用ChromeDriverManager安装ChromeDriver,并获取驱动程序的路径
            download_driver_path = ChromeDriverManager().install()
            # 复制文件到目标位置
            shutil.copy(download_driver_path, folder_path)
        else:
            print("版本一致,无需重新下载!")

    else:
        download_driver_path = ChromeDriverManager().install()
        shutil.copy(download_driver_path, folder_path)

    return file_path


if __name__ == '__main__':
    # 创建Chrome WebDriver,并指定驱动路径
    driver = webdriver.Chrome(service=Service(determine_google_drive()))
    # 打开百度网页
    driver.get("https://www.baidu.com")

3. Uso del borde

# Selenium4.0以下版本使用该方法
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager

driver = webdriver.Edge(executable_path=EdgeChromiumDriverManager().install())
driver.get("https://www.baidu.com")
# Selenium4.0以上版本使用该方法
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager

service = Service(EdgeChromiumDriverManager().install())
driver = webdriver.Edge(service=service)
driver.get("https://www.baidu.com")

4. Cómo utilizar Firefox

# Selenium4.0以下版本使用该方法
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
driver.get("https://www.baidu.com")
# Selenium4.0以上版本使用该方法
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from webdriver_manager.firefox import GeckoDriverManager

service = Service(GeckoDriverManager().install())
driver = webdriver.Firefox(service=service)
driver.get("https://www.baidu.com")

Guess you like

Origin blog.csdn.net/qq_45664055/article/details/132371769