在用SWTBot获取元素右键菜单的时候,往往因为时间问题、或者是SWTBot的限制问题,抛出菜单获取不到、或者XXX dispose等问题。
public static void clickContextMenu(final AbstractSWTBot<?> bot,
final String... texts) {
// show
final MenuItem menuItem = UIThreadRunnable
.syncExec(new WidgetResult<MenuItem>() {
public MenuItem run() {
MenuItem menuItem = null;
Control control = (Control) bot.widget;
Menu menu = control.getMenu();
for (String text : texts) {
Matcher<?> matcher = allOf(
instanceOf(MenuItem.class),
withMnemonic(text));
menuItem = show(menu, matcher);
if (menuItem != null) {
menu = menuItem.getMenu();
} else {
hide(menu);
break;
}
}
return menuItem;
}
});
if (menuItem == null) {
throw new WidgetNotFoundException("Could not find menu: "
+ Arrays.asList(texts));
}
// click
click(menuItem);
// hide
UIThreadRunnable.syncExec(new VoidResult() {
public void run() {
hide(menuItem.getParent());
}
});
}
右键菜单点击:
private static void click(final MenuItem menuItem) {
final Event event = new Event();
event.time = (int) System.currentTimeMillis();
event.widget = menuItem;
event.display = menuItem.getDisplay();
event.type = SWT.Selection;
UIThreadRunnable.asyncExec(menuItem.getDisplay(), new VoidResult() {
public void run() {
menuItem.notifyListeners(SWT.Selection, event);
}
});
}
隐藏右键菜单:
private static void hide(final Menu menu) {
menu.notifyListeners(SWT.Hide, new Event());
if (menu.getParentMenu() != null) {
hide(menu.getParentMenu());
}
}
SWTBot在使用的时候,很多问题都有因为等待时间造成的。以上这种方法,利用另外一个UI线程,打开右键菜单 --> 点击 --> 隐藏右键菜单。
分享到:
相关推荐
SWTBot支持多种操作,包括窗口操作、菜单选择、控件交互等,能够模拟用户对应用程序的各种操作。 ### 体系结构 SWTBot的体系结构主要由以下几个核心组件构成: 1. **Bot**: 这是SWTBot的核心,提供了一系列的工厂...
首先,SWTBot提供了一种简洁的API,用于选择和操作UI元素,如按钮、文本框、菜单项等。例如,你可以使用`Bot.button()`或`Bot.menuItem()`来定位并触发这些界面元素。这大大简化了测试脚本的编写,使得非专业测试...
SWTBot是一个强大的开源自动化测试框架,专门用于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)应用程序的UI测试。它提供了一种简单而强大的方式来编写可维护的测试,使得开发者和测试人员...
SWTBot是一款强大的开源自动化测试工具,主要用于Java GUI应用程序,特别是那些基于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)的应用。它提供了丰富的API,使得测试人员和开发人员能够...
SWTBot是一款强大的开源自动化测试框架,主要用于Java GUI应用程序,特别是那些基于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)的应用。它提供了丰富的API,使得编写测试用例变得更加简单...
这些例子通常涵盖了各种常见的UI元素和交互场景,例如按钮点击、菜单选择、文本输入等,旨在演示如何使用SWTBot的API来模拟用户操作。 在SWTBot的使用中,有几个关键知识点是开发者需要掌握的: 1. **安装与配置**...
### 使用SWTBOT进行GUI自动化测试 #### 引言 在软件开发过程中,图形用户界面(GUI)测试一直是挑战之一,特别是在Java世界里。传统的手动测试不仅耗时且容易出错,而自动化测试则可以显著提高测试效率和准确性。...
SWTBot是一个开源的自动化测试框架,主要用于Java SWT(Standard Widget Toolkit)和JFace应用程序的UI测试。它为开发者提供了一种简洁的方式来编写可维护的、可靠的用户界面测试。了解SWTBot的运行原理对于有效地...
swtbot eclipse插件 测试界面
### Web页面测试-swtbot #### 一、Web页面测试的重要性与挑战 随着互联网和内部网(Intranet)的迅速发展,Web技术已经成为影响工业、商业、医疗、教育、政府乃至个人生活的关键技术之一。越来越多的传统信息系统...
SWTBot是用于SWT / RCP应用程序的自动化和测试工具,具有记录和回放脚本的功能。 功能将包括基于文本的脚本,对测试套件的回放,报告和多线程回放的ant支持。
NULL 博文链接:https://mwhgjava.iteye.com/blog/2257771
方案示例-swtbot-e4 结合使用场景和SWTBot来测试和记录Eclipse RCP e4示例应用程序的示例UI测试和Scenarioo集成可在plugins/org.scenarioo.example.e4.test/src/org/scenarioo/example/e4文件夹中找到。构建并运行...
3. **选择和操作控件**:学习如何通过SWTBOT选取和操作窗口、菜单、按钮、文本框等GUI元素。 4. **事件模拟**:理解如何模拟用户的点击、输入等交互行为,以测试应用程序的功能。 5. **断言和验证**:学习使用...
SWTBot提供了丰富的API,可以模拟用户的操作,如点击按钮、填写表单、选择菜单项等,从而实现对GUI应用的自动化测试。 【Pentaho数据集成(PDI)】PDI,也称为Kettle,是Apache 2.0许可下的一款开源ETL(Extract, ...
2. **平台无关性**:由于SWT本身是跨平台的,SWTBot也继承了这一特性,可以在多种操作系统上运行测试,包括Windows、Linux和macOS。 3. **事件模拟**:SWTBot能够模拟各种用户事件,如键盘输入、鼠标点击、窗口操作...
SWTBot允许我们模拟用户交互,例如点击按钮、选择菜单项等。 要开始设置单元测试,确保你的项目已经包含了JUnit和SWTBot的依赖。这通常可以通过在Maven或Gradle的build文件中添加对应的依赖来实现。接下来,创建一...
- **Menu**: 创建菜单栏和上下文菜单。 - **ToolBar**: 显示图标按钮,常用于执行常用操作。 3. **布局管理** SWT提供了多种布局管理器,如FillLayout、GridLayout、RowLayout和 MigLayout,用于控制组件在容器...