目前,我正在自动化使用vb6开发的遗留应用程序的测试,该应用程序使用来自Janus Systems的GridEx2000b控件。
为此,我使用Ranorex作为我最喜欢的工具来开发测试自动化,这样我就可以使用c#开发测试代码。
我现在的问题是自动化Ranorex2000B的控制,GridEx没有任何开箱即用的支持。因此,我正在尝试找出一种解决方案,在该解决方案中,我可以使用为控件找到的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);
}
}发布于 2015-03-24 16:53:30
您可以尝试使用Microsoft UI自动化库(System.Windows.Automation)来标识控件的属性。有时,即使Ranorex失败,MSUIA在查看控件的本机属性以进行标识时,也会设法识别该控件。不能保证,但值得一试。Here is a link to a tutorial on using MSUIA.
https://stackoverflow.com/questions/28385038
复制相似问题