簡體   English   中英

如何通過腳本以編程方式確定已安裝的 IE 版本

[英]How to programmatically determine the installed version of IE from a script

我們有一個基於 selenium-grid 的自動化測試集群。

為了管理集群,我構建了一組 Rake (Ruby) 任務,這些任務可以啟動、重啟、ping 和停止節點。 我正在多個瀏覽器(包括 IE6、IE7 和 IE8)上測試我們的應用程序。 這意味着集群中的每個節點都必須知道安裝了哪個版本的 IE,以便它可以聲明正確的 selenium-grid 配置文件名稱(例如: "IE6 on Windows XP""IE8 on Windows Vista" ),因此可以針對這些瀏覽器編寫某些測試。

我的問題

我想減少這里的配置工作。 如何以編程方式確定當前系統上運行的是哪個版本的 IE? 我嘗試了以下技術:

wmic product where "Vendor like '%Microsoft%'" get Name, Version

但這只會返回使用 Windows Installer 安裝的程序版本,因此 IE 不會出現在此列表中。

理想情況下,我希望能夠從 Rake 腳本內部確定這一點,或者至少可以從 Rake 腳本中調用。

您可以使用 WMI,我知道它不是 rake 腳本,但您可以運行該腳本(或創建 .NET 應用程序)並將結果提供給您的應用程序。

這有點像黑客,但至少它會起作用。 這是來自technet的一些代碼。

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & _
    "\root\cimv2\Applications\MicrosoftIE")

Set colIESettings = objWMIService.ExecQuery _
    ("Select * from MicrosoftIE_Summary")

For Each strIESetting in colIESettings
    Wscript.Echo strIESetting.Version
Next

完整來源

獲得此信息后,您可以使用命令行將信息傳遞給您的 rake 腳本。

rake YourScript[<argument from vbscript>]

編輯:您可以將此代碼復制/粘貼到文件中,將其命名為whatever.vbs,然后使用cscript命令執行腳本。

cscript //Nologo ie_version.vbs

在任何版本的 Windows 上試試這個:

Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Internet Explorer"

strValueName = "Version"

oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue

Wscript.Echo "Installed IE Version: " & strValue

Wscript.Echo "IE Version: " & Left(strValue,1)

當我安裝了 11.X 時,注冊表中的“版本”字段似乎顯示為 9.X,但“svcVersion”顯示的版本與 IE11 的關於框中顯示的版本相同,所以也許

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\svcVersion

是更好的選擇嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM