编程获取WebDrvier中driver与浏览器的版本

在WebDriver中,我们需要确保各浏览器的版本与相应的driver能够对应一致,不然在实际的UI自动化测试过程中可能会出现一些稳定性问题。

浏览器的版本,我们在打开浏览器之后,一般可以通过“关于”来确定;相应的driver可以在下载时保存的文件夹带版本名。但是在浏览器或者driver版本较多或者有大量的机群需要维护时,有没有办法通过编程来获取浏览器和driver的信息呢?

首先我们来看driver信息的获取。由于driver是可执行文件,根据习惯,我们加上--version看时候有输出(下文都以windows10为例):

可以看到chromedriver能正确输出其版本信息。

geckodriver也可以输出版本信息。

这是,我们就可以通过编程实现了:

        Process process = Runtime.getRuntime().exec("D:\\dev\\selenium\\chromedriver_win32_2.43\\chromedriver.exe --version");
        Pattern pattern = Pattern.compile("ChromeDriver ([\\d\\.]+).*?");
        String output = IOUtils.toString(process.getInputStream(), "gbk");
        Matcher matcher = pattern.matcher(output);
        if(matcher.find()){
            System.out.println(matcher.group(1));
        }

下面再看看浏览器版本的获取。首先我们试试chrome --version,实际结果是启动了浏览器;firefox --version也不能显示浏览器版本信息。在windows上,有一个FileVersionInfo的类可以获取可执行文件的信息,比如我们可以看chrome.exe的信息:

在Java里,我们可以使用https://github.com/kichik/pecoff4j 开源的方法:

        PE pe = PEParser.parse("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
        ResourceDirectory rd = pe.getImageData().getResourceTable();

        ResourceEntry[] entries = ResourceHelper.findResources(rd, ResourceType.VERSION_INFO);
        for (int i = 0; i < entries.length; i++) {
            byte[] data = entries[i].getData();
            VersionInfo version = ResourceParser.readVersionInfo(data);

            StringFileInfo strings = version.getStringFileInfo();
            StringTable table = strings.getTable(0);
            for (int j = 0; j < table.getCount(); j++) {
                String key = table.getString(j).getKey();
                String value = table.getString(j).getValue();
                if(key.equalsIgnoreCase("FileVersion")){
                    System.out.println(value);
                }
            }
        }

另外一个需要解决的问题,就是如何获取浏览器的地址。我们都知道windows上安装的软件在注册表中都会保存有信息,所以我们可以通过读取注册表来解决这个问题。读取注册表的方法有很多,这里不在赘述JNA的实现,只是说一下不依赖三方组件的方法。直接上例子:

本质就是执行reg query来查询注册表的键值,后面就和上文获取driver版本的代码一样了。

与windows不同,linux上获取浏览器的版本信息要方便一些,上图:

关注:测试领域专家(头条&微信)获取第一时间文章更新。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值