Selenium 浏览器驱动署理 - 无需下载当地浏览器驱动镜像!(Java 版本!) ...

打印 上一主题 下一主题

主题 1688|帖子 1688|积分 5064

python 使用方式请参看往期:python 浏览器驱动署理怎样使用?
java web ui 框架搭建请参看往期:一文搞定 Java + Selenium + TestNG + Allure 的框架搭建以及封装!
概述

传统频繁下载对应浏览器驱动镜像的烦恼

当我们使用selenium 浏览器驱动的时候,我们常用做法就是,针对不同的浏览器下载不同的镜像版本,然后再进行浏览器访问;这样做的缺点在于:
当浏览器更新版本时候,你需要同步更新对应的浏览器驱动镜像,频繁维护
浏览器镜像源地址不稳定,有时候找不到对应的浏览器驱动镜像源头,下载缓慢
那么有没有一种方法,我不用频繁的安装对应的驱动,找镜像源,让第三方署理,我只需要写少量的代码即可,让它主动的去下载我对应的浏览器版本的驱动?
有的! 就是 webdriver_manager 这个第三方库!
官方网址:webdrivermanager

怎样使用?

maven 依靠

pom.xml 文件中添加依靠
  1. <!--浏览器驱动代理-->
  2.     <dependency>
  3.       <groupId>io.github.bonigarcia</groupId>
  4.       <artifactId>webdrivermanager</artifactId>
  5.       <version>5.9.2</version>
  6.     </dependency>
复制代码
WebDriverUtil

假设你有一个启动浏览器驱动的工具类,那么你就可以在你的工具类中,添加如下的方式:
  1. package org.ceiling.utils;
  2. import io.github.bonigarcia.wdm.WebDriverManager;
  3. import org.ceiling.api.EnvironmentType;
  4. import org.ceiling.base.BasePage;
  5. import org.ceiling.enums.BrowserType;
  6. import org.openqa.selenium.WebDriver;
  7. import org.openqa.selenium.chrome.ChromeDriver;
  8. import org.openqa.selenium.edge.EdgeDriver;
  9. import org.openqa.selenium.firefox.FirefoxDriver;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. public class WebDriverUtil {
  13.     private static final Logger logger = LoggerFactory.getLogger(BasePage.class);
  14.     private static WebDriver driver;
  15.     // 私有构造方法,防止外部实例化
  16.     private WebDriverUtil(){}
  17.     // 使用BrowserType枚举来创建WebDriver实例
  18.     public static WebDriver getDriver(BrowserType browserType) {
  19.         if (driver == null) {
  20.             switch (browserType) {
  21.                 case CHROME:
  22.                     WebDriverManager.chromedriver().setup();
  23.                     driver = new ChromeDriver();
  24.                     logger.info("CHROME 浏览器启动成功,正在打开网站...");
  25.                     break;
  26.                 case FIREFOX:
  27.                     WebDriverManager.firefoxdriver().setup();
  28.                     driver = new FirefoxDriver();
  29.                     logger.info("FIREFOX 浏览器启动成功,正在打开网站...");
  30.                     break;
  31.                 case EDGE:
  32.                     WebDriverManager.edgedriver().setup();
  33.                     driver = new EdgeDriver();
  34.                     logger.info("EDGE 浏览器启动成功,正在打开网站...");
  35.                     break;
  36.                 default:
  37.                     throw new IllegalArgumentException("不支持的浏览器类型: " + browserType);
  38.             }
  39.             // 配置通用设置,比如隐式等待时间
  40.             // 表示隐式等待10s 以下两种方式均可
  41.             // driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
  42.             // driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
  43.             // 获取环境 url 您也可以使用 application.properties 类似的配置文件形式 方式多样化 这里使用枚举类
  44.             driver.get("https://www.baidu.com");
  45.             driver.manage().window().maximize();
  46.         }
  47.         return driver;
  48.     }
  49.     // 关闭并释放资源的方法
  50.     public static void quitDriver() {
  51.         if (driver != null) {
  52.             driver.quit();
  53.             driver = null;
  54.         }
  55.     }
  56. }
复制代码
具体运行日记如下所示:

  1. [INFO]
  2. [INFO] -------------------------------------------------------
  3. [INFO]  T E S T S
  4. [INFO] -------------------------------------------------------
  5. [INFO] Running TestSuite
  6. 2025-01-03 15:35:00.338 [main] INFO  i.g.bonigarcia.wdm.WebDriverManager - Using chromedriver 131.0.6778.204 (resolved driver for Chrome 131)
  7. 2025-01-03 15:35:00.405 [main] INFO  i.g.bonigarcia.wdm.WebDriverManager - Exporting webdriver.chrome.driver as C:\Users\.cache\selenium\chromedriver\win64\131.0.6778.204\chromedriver.exe
复制代码
我们可以看到它本身下载了一个chromedriver.exe的驱动,然后存储到
C:\Users\.cache\selenium\chromedriver\win64\131.0.6778.204\chromedriver.exe 这个缓存目录之中
当再次运行的时候,会主动去缓存目录中查找有没有这个版本的相干驱动,如果有,会直接运行,如果版本不匹配,会主动下载相干匹配的版本,然后再去运行,这样,就完成了浏览器本身驱动署理,无需我们手动下载浏览器驱动镜像!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表