0

我目前正在自动化测试用 vb6 开发的遗留应用程序,它使用 Janus Systems 的 GridEx2000b 控件。

为此,我使用 Ranorex 作为我最喜欢的开发测试自动化的工具,这样我就可以使用 c# 开发测试代码。

我现在的问题是自动化 GridEx 2000b 控件,Ranorex 开箱即用没有任何支持。因此,我试图找出一个解决方案,我可以使用我可以找到的控件的 Win32 句柄来引用 GrixEx 控件,这样我就可以使用组件中的 ComInterface 来导航自动化控件。

我有一个解决方案的想法,但我不知道该怎么做,我希望你们能帮助我。

问题的伪代码:

using GridEX20;

class GridExWrapper
{
    public GridEX20.GridEXClass Instance;

    public GridExWrapper(IntPtr win32handle)
    {
        Instance = (GridEX20.GridEXClass)Win32ControlUtilities.GetControlReference(win32Handle);
    }
}


class Win32ControlUtilities
{
    public static SomeKindOfHandle GetControlReference(IntPtr win32Handle)
    {
        ...
        ...
        ...
    }
}

我将从 Ranorex 或其他一些间谍工具获得 win32handle。然后我可以像这样使用 GridExWrapper。

using NUnit.Framework;

class Program
{
    [Test]
    public void control_should_have_9_items()
    {
        /// Get win32 handle from Ranorex
        IntPtr win32handle = XXXXXX;
        int expectedItemCount = 9;

        GridEXClass control = new GridExWrapper(win32handle);
        Assert.AreEqual(expectedItemCount, control.ItemCount);
    }

}
4

1 回答 1

0

您可以尝试使用 Microsoft UI 自动化库 (System.Windows.Automation) 来识别控件的属性。有时即使 Ranorex 失败,MSUIA 也会设法识别控件,因为它会查看控件的本机属性以进行识别。不保证,但值得一试。这是一个关于使用 MSUIA 的教程的链接。

于 2015-03-24T08:53:29.807 回答