【问题标题】:How to find the web browser version without setup() method using WebDriverManager如何使用 WebDriverManager 在没有 setup() 方法的情况下查找 Web 浏览器版本
【发布时间】:2022-03-01 21:48:39
【问题描述】:

我有兴趣获取浏览器版本

我有两个问题-

问题1:-有没有办法不设置浏览器就可以查到浏览器版本? 或者我们可以先强制停止驱动程序的下载。 使用下面的代码是可能的,但在这种情况下将下载驱动程序。

WebDriverManager.chromedriver().setup();  //without doing this step
WebDriverManager.chromedriver().getDownloadedDriverVersion();

问题 2:- 目前我正在使用 wmic 命令进行浏览器检测,该命令在 WebDriverManager 中使用,但在某些系统上失败。 WebDriverManager 中使用了哪些替代方法来获取浏览器版本。我很想知道这一点,因为我已经在我的系统上禁用了 wmic,但 webDriverManager 仍然照常工作(我想使用 WebDriverManager 中的替代方法)。我在理解代码方面遇到了困难。请帮助我了解 WebDriverManager 的流程,例如使用哪些方法/方式来检测浏览器版本以及以什么顺序。

任何帮助将不胜感激!

【问题讨论】:

  • 上次我看的时候我认为有很多后备方法......源代码在 git 上可用。每个浏览器和操作系统会有不同的方法。对于 Chrome,通过文件夹名称获取版本号相当容易。 (它会创建一个文件夹,其名称是可执行文件目录中的版本号。)但不确定 webdrivermanager 是否使用该方法。

标签: selenium selenium-webdriver webdriver webdriver-manager webdrivermanager-java


【解决方案1】:

WebDriverManager

WebDriverManager 是开源 Java 库,它以全自动方式维护Selenium WebDriver 所需的驱动程序(例如,chromedrivergeckodriver、msedgedriver 等)的配置管理。

此外,WebDriverManager 还提供了其他相关功能,例如发现本地系统中安装的浏览器、构建WebDriver 对象(如 ChromeDriver、FirefoxDriver、EdgeDriver 等)以及在 Docker 容器中无缝运行浏览器的能力。

WebDriverManager 的主要用途是驱动程序管理的自动化(即下载设置维护)您的测试自动化套件中涉及的驱动程序。因此,使用WebDriverManager,您不太可能一开始就强制停止下载驱动程序。

但是,当您一段时间内第一次使用特定浏览器版本时,匹配的驱动程序版本会下载并保存在缓存中,这从生成的日志中非常明显。

====== WebDriver manager ======
Current google-chrome version is 98.0.4758
Get LATEST chromedriver version for 98.0.4758 google-chrome
There is no [win32] chromedriver for browser  in cache
Trying to download new driver from https://chromedriver.storage.googleapis.com/98.0.4758.102/chromedriver_win32.zip
Driver has been saved in cache [C:\Users\Sadanand.Kolhe\.wdm\drivers\chromedriver\win32\98.0.4758.102]

向前看,如果浏览器版本和匹配的驱动程序版本保持不变,同时缓存中可以使用下载的驱动程序版本的先前版本,则避免重新下载,这从日志中可以看出由两个背靠背测试执行生成。

====== WebDriver manager ======
Current google-chrome version is 98.0.4758
Get LATEST chromedriver version for 98.0.4758 google-chrome
Driver [C:\Users\Sadanand.Kolhe\.wdm\drivers\chromedriver\win32\98.0.4758.102\chromedriver.exe] found in cache

【讨论】:

    【解决方案2】:

    关于 Q1,从版本 5 开始,WebDriverManager 允许检测给定浏览器是否安装在本地系统中。为此,每个经理都提供了方法getBrowserPath()。此方法返回一个Optional<Path>,如果给定浏览器未安装在系统中或检测到浏览器路径(在可选对象内),则为空。见doc

    关于第二季度,WebDriverManager 在内部使用一个名为commands database 的知识数据库。该数据库是一组 shell 命令,用于发现不同操作系统中给定浏览器的版本(例如,google-chrome --version 用于 Linux 中的 Chrome)。此数据库包含适用于 Windows 的 WMIC 命令,但也包含对注册表的查询。再次查看doc

    【讨论】:

    • 感谢您的回复,有什么方法可以直接在WebDriverManager中获取浏览器版本?
    • 另外,在我的系统上,WMIC 已关闭,REG 已被管理员禁用(通过 java 代码独立运行 reg 查询时出现相同的错误),但 WebDriverManager 工作正常。请让我知道还有其他后备方法吗?
    猜你喜欢
    • 2016-01-22
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多