我目前正在自动化测试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);
}
}
答案 0 :(得分:0)
您可以尝试Microsoft UI自动化库(System.Windows.Automation)来识别控件的属性。有时即使Ranorex失败,MSUIA也会设法识别控件,因为它会查看控件的本机属性以进行识别。不保证但值得一试。Here is a link to a tutorial on using MSUIA.