原創|其它|編輯:郝浩|2009-04-01 09:52:59.000|閱讀 556 次
概述:如何靈活查找窗體內的對象呢?和查找窗體類似,可以使用這些對象特有的屬性,依照一定的查找邏輯進行處理。下面是一個典型的查找方法,以此為例進行說明
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
如何靈活查找窗體內的對象呢?和查找窗體類似,可以使用這些對象特有的屬性,依照一定的查找邏輯進行處理。下面是一個典型的查找方法,以此為例進行說明:
public TestObject getObject(ArrayList<Property> v) {
rootTO.waitForExistence(waitMaxTime, waitCheckInterval);
TestObject returnObject = null;
TestObject to[] = null;
double timeNow = System.currentTimeMillis() / 1000;
double endTime = timeNow + waitMaxTime;
v.add(new Property("showing", "true"));
while (returnObject == null && timeNow < endTime) {
to = rootTO.find(atDescendant((Property[]) v.toArray(new Property[0])));
if (to.length > 1) {
throw new AmbiguousRecognitionException("Find more than one object.");
}
if (to.length == 1) {
returnObject = to[0];
} else
sleep(waitCheckInterval);
timeNow = System.currentTimeMillis() / 1000;
}
return returnObject;
}
protected WButton getButton(String name) {
ArrayList<Property> v = new ArrayList<Property>();
v.add(new Property(".class", "javax.swing.JButton"));
v.add(new Property("accessibleContext.accessibleName", name));
TestObject to = og.getObject(v);
if (!Utility.exists(to))
throw new ObjectNotFoundException();
else
return new WButton(to);
}
與窗口處理一樣,如果某些參數需要使用正則表達式處理,可以使用下面的方法:
protected WListBox getList(String label) {
RegularExpression exp = new RegularExpression(".*JComboBox$|.*JList$", false);
ArrayList<Property> v = new ArrayList<Property>();
v.add(new Property(".class", exp));
v.add(new Property(".priorLabel", label));
TestObject to = og.getObject(v);
if (!Utility.exists(to))
throw new ObjectNotFoundException();
else
return new WListBox(to);
}
在對象查找過程中,可能需要各種不同的查找邏輯。例如,如果對象可能存在也可能不存在,在查找的時候就不需要等待并反復查找,這時候,可以使用如下的方法:
public TestObject getObjectWithoutWait(ArrayList<Property> v) {
rootTO.waitForExistence();
TestObject returnObject = null;
v.add(new Property("showing", "true"));
TestObject to[] = rootTO.find(atDescendant((Property[]) v.toArray(new Property[0])));
if (to.length > 1) {
throw new AmbiguousRecognitionException(
Find more than one object.);
}
if (to.length == 1) {
returnObject = to[0];
}
return returnObject;
}
有時候,界面上有多個具有相同屬性的對象,只能通過他們的編號來區分他們;有時候需要以某個確定對象為根來進行查找;有時候需要查找直接子對象而不是所 有子對象,等等。并且,這些邏輯之間也存在排列組合的情況,實際使用中可以根據自身需要靈活處理。這些方法都是對上面基本方法的擴展,大家可以嘗試自己來 實現。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:BlogJava