Я записал и частично написал тест для веб-сайта, который работает для определенного типа браузера. Пользователь может изменить поле класса так называемого типа EBrowserType, которое является созданным мной enum. Он содержит все типы браузеров, с которыми может справиться Ranorex.
Теперь меня попросили провести цикл по всему тесту, в котором вызываются все типы браузеров. У меня возникают проблемы, так как существующий тест представляет собой группу записей, где пользователь щелкнул в какой-то момент в текстовом поле открытого браузера запрошенного типа браузера. Кажется, что в цикле это больше невозможно, поскольку сам код создает браузер и закрывает его после этого.
В исходном коде есть часть SETUP, открывающая браузер, и следующая запись.
Эта запись называется SearchJobRegionRecording и запускается щелчком мыши в поле поиска браузера. В автоматически созданном файле C# это выглядит следующим образом:
[TestModule("c7957eb6-feec-4dce-aef3-6af20fa71b8b", ModuleType.Recording, 1)]
public partial class SearchJobRegionRecording : ITestModule
{
/// <summary>
/// Holds an instance of the IVMJobsiteTest.IVMWebsiteTestRepository repository.
/// </summary>
public static IVMJobsiteTest.IVMWebsiteTestRepository repo = IVMJobsiteTest.IVMWebsiteTestRepository.Instance;
[…]
[System.CodeDom.Compiler.GeneratedCode("Ranorex", "8.0")]
void ITestModule.Run()
{
Mouse.DefaultMoveTime = 0;
Keyboard.DefaultKeyPressTime = 0;
Delay.SpeedFactor = 100.00;
Init();
Report.Log(ReportLevel.Info, "Mouse", "Mouse Left Click item 'Home.Text' at 128;8.", repo.Home.TextInfo, new RecordItemIndex(0));
repo.Home.Text.Click("128;8");
[…]
}
}
Как видите, для доступа к экземпляру браузера требуется объект repo.

Мой вопрос: Как я могу получить экземпляр браузера в моем коде цикла браузера? Единственная подсказка о созданном браузере - это идентификатор процесса.
Вот соответствующая часть кода цикла браузера:
public void TestAllBrowsers()
{
foreach (EBrowserType browser in Enum.GetValues(typeof(EBrowserType)))
{
foreach (Point size in sizes)
{
Report.Log(ReportLevel.Info, "Code", "Open with the " + browser + " browser of "
+ size.X + '×' + size.Y + " size " + url);
BaseCodeCollection.KillCurrentBrowser(browser);
var height = (short) size.X;
var width = (short) size.Y;
int processID = BaseCodeCollection.OpenBrowser(height, width, url, browser, isVerbose);
DetermineOriginalVacancies();
EnterSearchWords(); // HERE, A RepoItemInfo or something like that should be passed so that a mouse click is possible.
AnalyzeSearchResultsMethod();
CloseBrowser();
}
}
}





Я не уверен, что понимаю вопрос, но постараюсь дать вам как можно больше намеков. Я успешно создал небольшой набор тестов, который в основном выполняет следующие функции без использования пользовательского кода:
Все эти шаги содержатся в тестовом примере, который выполняет итерацию по списку поддерживаемых браузеров (IE и Chrome в моем примере, но он будет работать с любым браузером, поддерживаемым Ranorex).
Мои позиции репо:
Веб-документ Bing: /dom[@caption='Bing' and @page=''] (убедитесь, что шпион обнаруживает только один экземпляр веб-документа, иначе CloseBrowser не сработает)
Поле поиска Bing (под элементом репозитория Bing): .//input[#'sb_form_q']
Запись StartBrowser - это просто действие «Открыть браузер» (с URL-адресом и браузером в качестве аргументов), за которым следует задержка в 2 секунды (для загрузки страницы). Запись CloseBrowser - это просто действие закрытия приложения с элементом репозитория веб-документа Bing в качестве аргумента.
Обратите внимание, что мой пример нигде не нужен экземпляр браузера, поэтому я точно не знаю, отвечает ли он на ваш вопрос. Единственная запись, для которой требуется параметр браузера, - это запись StartBrowser. Во всех других записях используются элементы репозитория, которые не зависят от браузера (что является одной из сильных сторон использования Ranorex).
Если мой пример не помог вам в решении вашей проблемы, не стесняйтесь спрашивать подробности.
Спасибо за ваш ответ. Это возможно при использовании $variables, которые читаются из файлов CSV.
Я счастлив, что помог. Что касается второго предложения, я не понимаю, о чем вы говорите. Если вам интересно, как перебирать типы браузеров, в качестве первого шага я бы использовал «Простую таблицу данных» в наборе тестов и привязал ее к записи StartBrowser.
Вы видели следующий ответ, в котором объясняется, как закрыть любой экземпляр браузера, используя только элемент репо? stackoverflow.com/questions/37142841/…