SWTWorkbenchBot没能找到“控制台”视图

问题描述 投票:0回答:2

我正在探索SWTWorkbenchBot的使用在我的一个基于Eclipse项目的自动化使用。然而,一些试图让“控制台”视图时,似乎不可思议。

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种情况之一成立:

  • 任一代码将与“得到控制台视图”消息退出印刷
  • 或消息“得到了控制台视图”不打印,因为“控制台”视图未找到的消息和类型WidgetNotFoundException的异常被抛出并且catch中的代码将被执行。输出不应该包含标题为“控制台”,或者至少,毗邻所有视图标题,false应打印。

出人意料的是,这不会发生。 “拿到了控制台视图”消息不打印,但如果你看一下视图的列表中,你看到了存在行控制台真,这意味着,使用方法.viewByTitle()的SWTWorkbenchBot无法得到控制台的看法,但他知道存在通过检查.views()内容。

上面的代码除了控制台视图中的任何视图正常工作。难道我做错了什么吗?提前致谢。

eclipse view swt swtbot
2个回答
1
投票

如果我看着我运行Eclipse的观点被称为“控制台(常规)”。你真的不应该依赖任何人的名字,如果你有一个ID引用视图的可能性,检查follwing代码段将工作

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

就在旁注:你应该让UI测试码多一点健壮,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
投票
new SWTWorkbenchBot().viewByPartName("Console").show(); 

应该做的工作。

你在用户界面中看到的,而是由org.eclipse.ui.IWorkbenchPartReference.getPartName()返回的值不org.eclipse.ui.IWorkbenchPartReference.getTitle()返回的值。

© www.soinside.com 2019 - 2024. All rights reserved.