2017-05-14 89 views
0

我正在探索使用SWTWorkbenchBot来在我的基于eclipse的项目自动化中使用。但是,尝试获取“控制台”视图时,看起来很奇怪。SWTWorkbenchBot无法找到“控制台”视图

SWTWorkbenchBot workbenchBot = new SWTWorkbenchBot(); 
String consoleTitle = "Console"; 
try { 
    workbenchBot.viewByTitle(consoleTitle).show(); 
    System.out.println("Got the Console view"); 
} catch (Exception e) { 
    for (SWTBotView view : workbenchBot.views()) { 
    System.out.println(view.getTitle() + "\t" + v.getTitle().equals(consoleTitle)); 
    } 
} 

从上面的代码中,我假定的以下2种情况之一成立:

  • 要么代码将与“得到控制台视图”
  • 消息打印或消息“GOT退出控制台视图“消息未打印,因为未找到”控制台“视图,并且引发了WidgetNotFoundException类型的异常,并且将执行catch中的代码。输出不应该包含标题“控制台”或至少在所有视图标题旁边应打印false

令人惊讶的是,这没有发生。消息“获得控制台视图”未打印,但如果查看视图列表,则会看到存在一行控制台真实这意味着SWTWorkbenchBot无法使用方法.viewByTitle()获取控制台视图,但是他知道通过检查.views()内容存在。

上述代码适用于任何视图,但控制台视图除外。我在这里做错了什么?提前致谢。

回答

1

如果我看看我正在运行的Eclipse,View被称为“Console(General)”。你真的不应该依赖任何人的名字,如果你有一个ID引用视图的可能性,检查follwing代码段将工作

workbenchBot.viewById("org.eclipse.ui.console.ConsoleView").show();

只是一个旁注:你应该让UI测试码多一点强大的UI测试往往会因时序,用户界面,重叠窗口等原因而失败,因此很快就会失败并明确说明测试失败的原因。

[...] 
SWTBotView view = workbenchBot.viewByTitle(consoleTitle); 
assertNotNull("Console was not found", view); 
try { 
    view.show() 
} catch (Exception e) { 
    fail("Error occured while opening console") 
} 
[...] 
+0

有没有视图\ controls \内置ID的任何参考?你在哪里找到“org.eclipse.ui.console.ConsoleView”? –

+1

您可以使用称为“Plugin-Spy”的便利工具。举个例子,view-id只需在Eclipse IDE中打开视图,然后按下Shift + Alt + F1即可。弹出窗口将显示所需的信息。 –