我已经记录并部分编写了一个网站测试,该测试适用于特定的浏览器类型。用户可以修改一个所谓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
访问浏览器实例需要一个对象。
我的问题:如何在浏览器循环代码中获取浏览器实例?关于创建的浏览器的唯一提示似乎是进程 ID。
以下是浏览器循环代码的相应部分:
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();
}
}
}