У нас есть автоматизированный кластер тестирования на основе сетки селена.
Для управления кластером я создал набор Граблей (Ruby) задачи, которые могут запуститься, перезапустить, проверить с помощью ping-запросов, и узлы остановки. Я тестирую наше приложение через многие браузеры включая IE6, IE7 и IE8. Это означает, что каждый узел в кластере должен знать, какая версия IE установлена так, чтобы это могло требовать корректного имени профиля сетки селена (например: "IE6 on Windows XP"
по сравнению с. "IE8 on Windows Vista"
), так, чтобы определенные тесты могли быть записаны против тех браузеров.
Мой вопрос:
Я хотел бы сократить работу конфигурации здесь. Как я программно определяю, какая версия IE работа является существующей системой? Я попробовал следующую технику:
wmic product where "Vendor like '%Microsoft%'" get Name, Version
Но это только возвращает версии программ, которые были установлены с Windows Installer, таким образом, IE не обнаруживается в этом списке.
Идеально я хотел бы смочь определить это изнутри сценария Граблей или по крайней мере чего-то, что это является вызываемым из сценария Граблей.
Вы можете использовать WMI, я знаю, что это не скрипт граблей, но вы можете запустить скрипт (или создать приложение .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
Full Source
Как только у вас есть эта информация, вы можете передавать информацию в ваш скрипт граблей с помощью командной строки.
rake YourScript[<argument from vbscript>]
EDIT: Вы можете скопировать / вставить этот код в файл, назовите его whatever.vbs, и используйте команду Cscript для выполнения сценария.
CScript // Nologo IE_Version.VBS