2014-02-10 1 views
0

Я закодировал некоторые автоматизированные веб-тесты на C#, они используют Библиотеку кодированных пользовательских интерфейсов.Сбои, меняющие текущий браузер в кодированных пользовательских интерфейсах

Эти тесты не являются кучей записанных действий, они были закодированы и выполнены в IE.

Я использую Visual Studio 2010, и я пытаюсь запустить мои тесты в Firefox 3.6. Я уже установил необходимые компоненты для этой цели.

Проблема в том, что я хочу выбрать браузер, который я хочу использовать для тестирования своих приложений, поэтому я хочу изменить поле «currentBrowser», но я не могу иметь доступ к этому свойству, потому что это свойство статического члена.

Я попытался использовать библиотеку Reflection для доступа к объекту, но я не могу этого достичь.

Это пример моего текущего кода:

BrowserWindow browserWin = new BrowserWindow(); 

// Copy the dll 
Assembly testAssembly = Assembly.LoadFile(@"c:\Microsoft.VisualStudio.TestTools.UITesting.dll"); 

// get type of class BrowserWindow from just loaded assembly 
Type BrowserWindowType = testAssembly.GetType("Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow"); 

object browserInstance = Activator.CreateInstance(BrowserWindowType, new object[] {}); 
PropertyInfo BrowserPropertyInfo = BrowserWindowType.GetProperty("CurrentBrowser"); 

//set value of property: public 
BrowserPropertyInfo.SetValue(browserInstance,"FireFox", null); 
// get value of property: public 
string value = (string)BrowserPropertyInfo.GetValue(browserInstance, null); 

Я также попробовал эту строку кода:

typeof(BrowserWindow).InvokeMember("set_CurrentBrowser", BindingFlags.InvokeMethod | BindingFlags.DeclaredOnly |BindingFlags.Public | BindingFlags.Static, null, bw, args,null,null,null); 

Но значение свойства «currentBrowser» никогда не изменяется.

Нужны ли мне какие-то специальные разрешения? Может быть, что-то вроде «ReflectionPermission»

Большое спасибо

ответ

2

Это должно выглядеть примерно так:

BrowserWindow.CurrentBrowser = "firefox"; 
BrowserWindow bw = BrowserWindow.Launch(new Uri("uriAsString")); 
// At this point, it should launch firefox if you have the current cross-browser 
// components installed and the expected version of firefox (I have 26) 

Вы сказали:

Проблема заключается в том, что я хочу, чтобы выбрать браузер, который я хочу использовать для тестирования своих приложений, поэтому я хочу изменить поле «currentBrowser», но я не могу получить доступ к этому свойству, потому что это свойство статического члена.

Статический не препятствует доступу. Это означает, что вам не нужен экземпляр этого объекта для доступа к свойству/методу. Если вы посмотрите на класс с помощью браузера объектов вы увидите следующее:

public static string CurrentBrowser { get; set; } 

Итак, мы знаем, что мы имеем доступ к нему, потому что это общественное. Мы можем получить значение и установить значение, потому что оно содержит get; и без модификаторов скрытого доступа.