如何使用 SWTBot 获取 Eclipse 向导的描述文本?该wizard.shell.gettext()
方法给出了标题,但我找不到任何获取描述的方法。我需要它来验证描述和向导页面上显示的错误消息。
问问题
801 次
3 回答
2
作为一种解决方法,我使用了这段代码
public void verifyWizardMessage(String message) throws AssertionError{
try{
bot.text(" "+message);
}catch(WidgetNotFoundException e){
throw (new AssertionError("no matching message found"));
}
}
这里 bot 是方法可用的 SWTBot 实例。向导消息会自动在描述字段前添加一个空格,所以我使用" "+message
. 希望能帮助到你
于 2012-09-07T05:54:38.980 回答
1
为了测试我们的 Eclipse 插件,与我合作的团队在 SWTBot 之上开发了一个自定义 DSL 来表示向导、对话框等。这是一个在我们的案例中运行良好的代码片段(请注意,这可能与 eclipse 版本相关,在 eclipse 3.6 和 4.2 中似乎没问题)
class Foo {
/**
* The shell of your dialog/wizard
*/
private SWTBotShell shell;
protected SWTBotShell getShell() {
return shell;
}
protected <T extends Widget> T getTopLevelCompositeChild(final Class<T> clazz, final int index) {
return UIThreadRunnable.syncExec(shell.display, new Result<T>() {
@SuppressWarnings("unchecked")
public T run() {
Shell widget = getShell().widget;
if (!widget.isDisposed()) {
for (Control control : widget.getChildren()) {
if (control instanceof Composite) {
Composite composite = (Composite) control;
int counter = 0;
for (Control child : composite.getChildren()) {
if (clazz.isInstance(child)) {
if (counter == index) {
return (T) child;
}
++counter;
}
}
}
}
}
return null;
}
});
}
/**
* Returns the wizard's description or message displayed in its title dialog
* area.
*
* A wizard's description or message is stored in the very first Text widget
* (cf. <tt>TitleAreaDialog.messageLabel</tt> initialization in
* <tt>org.eclipse.jface.dialogs.TitleAreaDialog.createTitleArea(Composite)</tt>
* ).
*
*/
public String getDescription() {
final Text text = getTopLevelCompositeChild(Text.class, 0);
return UIThreadRunnable.syncExec(getShell().display, new Result<String>() {
public String run() {
if (text != null && !text.isDisposed()) {
return text.getText();
}
return null;
}
});
}
}
于 2014-08-12T09:41:39.970 回答
0
在 WizardNewProjectCreationPage 的情况下,我使用:
bot.textWithLabel("Create Project"); // This title set by page.setTitle("Create Project");
bot.text("Description."); // this is description set by page.setDescription("Description.");
于 2019-08-15T18:10:31.693 回答