You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Appium(Selenium WebDriver)结合Ruby获取Chrome浏览器版本号

获取Android设备上Chrome实际版本号的解决办法

我来帮你搞定这个获取Chrome实际版本号的问题!你遇到的情况很常见——直接用@driver.capabilities.version要么返回空,要么返回你设置的latest字符串,因为Appium在启动Chrome Web会话时,并不会自动把设备上的真实Chrome版本同步到capabilities里。下面给你两种靠谱的解决方法:

方法一:通过adb命令直接查询(无需启动WebDriver)

Chrome在Android上的包名是com.android.chrome,我们可以用adb命令直接读取设备上该应用的版本信息,然后在代码里解析结果。

在Ruby中可以这么写:

# 执行adb命令获取Chrome版本信息
chrome_version_output = `adb shell dumpsys package com.android.chrome | grep versionName`
# 从输出中提取版本号
chrome_version = chrome_version_output.split('=').last.strip
puts "设备上Chrome的实际版本: #{chrome_version}"

注意:确保你的环境变量里配置了adb路径,不然代码会找不到adb命令哦。

方法二:通过Appium的Mobile命令获取(需已启动Driver)

如果你已经启动了Appium Driver,可以调用Appium内置的mobile: getInstalledApps命令,获取所有已安装应用的信息,然后筛选出Chrome的版本。

修改你的代码如下:

desired_caps = { caps: { platformName: 'Android', versionNumber: '7.0', deviceName: 'S7 Edge', device: "Android", browserName: "Chrome" } }
@driver = Appium::Driver.new(desired_caps).start_driver
@driver.get('https://www.google.com')

# 获取用户安装的所有应用信息
installed_apps = @driver.execute_script('mobile: getInstalledApps', { appType: 'user' })
# 查找Chrome应用
chrome_app_info = installed_apps.find { |app| app['appId'] == 'com.android.chrome' }

if chrome_app_info
  puts "设备上Chrome的实际版本: #{chrome_app_info['version']}"
else
  puts "当前设备未安装Chrome浏览器"
end

为什么原来的方法不行?

当你指定browserName: "Chrome"启动会话时,Appium的version capability只是用来指定你想要使用的Chrome版本(比如89.0),如果你填latest,它只会把这个字符串原样返回,不会去检测设备上的真实版本;而如果不填,这个字段就会是空值,所以你之前的代码返回空字符串。

内容的提问来源于stack exchange,提问作者BIGJOHN

火山引擎 最新活动