未找到SWTBotShell小部件异常

时间:2015-10-29 08:02:07

标签: eclipse swtbot

我在eclipse Juno Service Release 2中使用swtBot编写自动化测试。我的代码

@BeforeClass
public static void beforeClass() {
    SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
    bot = new SWTWorkbenchBot();
    try {
        bot.viewByTitle("Welcome").close();
    } catch (WidgetNotFoundException e) {
        // ignore
    }
    bot.menu("Window").menu("Preferences").click();
    SWTBotShell shell = bot.shell("Preferences");
    shell.activate();
    SWTBotView view = bot.viewByTitle("Preferences");

    bot.tree().expandNode("General").select("Workspace");
    SWTBotCheckBox buildAuto = bot.checkBox("Build automatically");
    if (buildAuto != null && buildAuto.isChecked())
        buildAuto.click();
    bot.button("Apply").click();
    bot.tree().expandNode("General").select("Perspectives");
    SWTBotRadio radio = bot.radio("Always open");
    if (radio != null && !radio.isSelected())
        radio.click();
    bot.button("OK").click();
}

我遇到以下异常:

  

org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException:   无法找到shell匹配:使用文字'偏好设置'在   org.eclipse.swtbot.swt.finder.SWTBotFactory.waitUntilWidgetAppears(SWTBotFactory.java:387)     在   org.eclipse.swtbot.swt.finder.SWTBotFactory.shells(SWTBotFactory.java:114)     在   org.eclipse.swtbot.swt.finder.SWTBotFactory.shell(SWTBotFactory.java:104)     在   org.eclipse.swtbot.swt.finder.SWTBotFactory.shell(SWTBotFactory.java:95)     在com.packtpub.e4.junit.plugin.UITest.beforeClass(UITest.java:49)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)at   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)at   java.lang.reflect.Method.invoke(未知来源)

1 个答案:

答案 0 :(得分:0)

请勿将测试代码放在使用@BeforeClass注释的方法中。此时,测试类甚至没有实例化。参看this answer here有关注释的解释。

如果您已将相关代码移至@Test带注释的方法,但代码仍无效,请检查拼写等。