如何在循环中调用 运行 Ranorex 测试?

How to call a running Ranorex test in a loop?

我已经录制并部分编写了适用于特定浏览器类型的网站测试。用户可以修改所谓EBrowserType类型的一个class字段,也就是我创建的一个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();
        }
    }
}

我不确定我是否理解这个问题,但会尽可能多地给你提示。我已经成功创建了一个小型测试套件,它基本上执行以下操作,而无需使用任何用户代码:

  • 迭代支持的浏览器列表(IE、Chrome 等):
    • 在浏览器中打开 Bing (StartBrowser)
    • 点击搜索字段(repo 项目)(ClickSearchTerm)
    • 遍历搜索词:
      • 在搜索字段(回购项)中输入文本 (SetSearchTerm)
      • 清除搜索字段中的文本(回购项)(ClearSearchTerm)
    • 关闭浏览器实例(回购项目)(CloseBrowser

所有这些步骤都包含在一个测试用例中,该用例遍历支持的浏览器列表(在我的示例中为 IE 和 Chrome,但它适用于 Ranorex 支持的任何浏览器)。

我的回购项目:

Bing 网络文档:/dom[@caption='Bing' and @page=''](确保间谍只找到一个网络文档实例,否则 CloseBrowser 将失败)

Bing 搜索字段(在 Bing 存储库项下):.//input[#'sb_form_q']

StartBrowser 记录只是一个打开浏览器操作(使用 Url 和浏览器作为参数),然后延迟 2 秒(以加载页面)。 CloseBrowser 记录只是一个关闭应用程序操作,以 Bing 网络文档回购项作为参数。

请注意,我的示例 在任何地方都不需要浏览器实例 ,这就是为什么我不确定这是否能回答您的问题。唯一需要浏览器参数的记录是 StartBrowser 记录。所有其他录音都使用与浏览器无关的存储库项目(这是使用 Ranorex 的优势之一)。

如果我的示例无法帮助您解决问题,请随时询问更多详细信息。