1

我已经记录并部分编写了一个网站测试,该测试适用于特定的浏览器类型。用户可以修改一个所谓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();
        }
    }
}
4

1 回答 1

1

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

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

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

我的回购项目:

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

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

StartBrowser录制只是一个打开浏览器操作(以 Url 和 Browser 作为参数)后跟 2 秒延迟(加载页面)。CloseBrowser记录只是一个以 Bing Web 文档 repo 项目作为参数的关闭应用程序操作

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

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

于 2018-03-27T21:00:47.647 回答