我对IBM(8.5版)有个问题。我正在为一个相对复杂的应用程序建立一个自动化测试框架,它使用了大量的选项卡和面板。问题是,我无法检查使用 find 方法找到的对象现在是否在屏幕上实际可见(在所有其他对象的前面/顶部)。换句话说,我需要一个算法,它将只搜索当前活动(带到前面)选项卡。
我使用Delphi完成了一个非常简单的应用程序来调试这个问题:一个TPageControl包含2个选项卡,每个选项卡上都有一个文本字段(TEdit)。主窗口是一个映射的对象,所以我是这样进行搜索的:
TestObject[] objs = window().find(atDescendant(".class", "TEdit"));如果应用程序刚刚启动(只有第一个文本字段是可见的-第一个选项卡是活动的),那么find方法将返回一个只有一个文本字段的数组。但是,如果我激活第二个选项卡,那么RFT就会找到两个文本字段(无论我在后面做什么),并且没有办法区分其中的哪个实际上在屏幕上。
我一直在使用一些自动化工具,但是RFT中的这个东西让我很沮丧。以下是一些更多的信息,以避免明显的建议。相信我,我一直在寻找答案。
在我的调试应用程序中,我可以检查父对象以了解哪个文本字段属于哪个选项卡,但是如何找到哪个选项卡被激活?
QTP和TestComplete都具有确保所需对象实际上在屏幕上的功能,如果尝试单击超出视图的对象,两者都会抛出异常。更进一步- QTP允许访问对象的本机属性和方法,这通常在没有任何正确的方法时会有所帮助(我可能会在调试应用程序中检查ActivePageIndex,以了解哪个选项卡是活动的)。
我出什么问题了吗?还是我读的东西不够仔细?或者这个问题对我的机器来说是局部的?
如何使用IBM检查实际对象的可见性?
发布于 2014-07-19 17:41:07
若要确定对象是否可见,请尝试类似的操作,并查看是否解决了问题。
boolean isActuallyVisible(TestObject t)
{
boolean isVisible = true;
Rectangle r = (Rectangle) t.getProperty(".bounds");
if(r.width == 0 && r.height ==0)
{
isVisible = false; // bound says height /width is zero , most likely invisible object.
}
return isVisible;
}https://stackoverflow.com/questions/24826933
复制相似问题