[英]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.