2

我想知道是否有任何方法可以获取给定的所有小部件Shell,包括Shell. 实现这一目标的最简单方法是什么?

4

2 回答 2

2

比唯一答案更具可读性和扩展性:

主要思想是您不能“一次”获得所有小部件,您需要使用matcher。此外,即使您有小部件,您也应该创建它们的副本以避免无效线程访问错误。

所以,匹配所有的片段(在这种情况下,所有文本小部件,但它可以很容易地被任何类型或小部件采用,如凯恩的回答):

import org.eclipse.swtbot.swt.finder.SWTBot;
import org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;

Matcher<? extends Text> matcher = WidgetMatcherFactory.widgetOfType(Text.class);
List<? extends Text> widgets = new SWTBot().widgets(matcher);

for (Text t : widgets) {
  // Create a copy to work with to avoid Invalid Thread exception
  SWTBotText text = new SWTBotText (t);
  // Do stuff...
}
于 2017-05-22T15:07:49.457 回答
0

尝试org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory.allOf(WidgetMatcherFactory.widgetOfType(Widget.class))

于 2013-05-09T10:16:17.083 回答