`
ben_hu
  • 浏览: 93972 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

SWTBot右键菜单

 
阅读更多
在用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支持多种操作,包括窗口操作、菜单选择、控件交互等,能够模拟用户对应用程序的各种操作。 ### 体系结构 SWTBot的体系结构主要由以下几个核心组件构成: 1. **Bot**: 这是SWTBot的核心,提供了一系列的工厂...

    swtbot 详细例子说明

    首先,SWTBot提供了一种简洁的API,用于选择和操作UI元素,如按钮、文本框、菜单项等。例如,你可以使用`Bot.button()`或`Bot.menuItem()`来定位并触发这些界面元素。这大大简化了测试脚本的编写,使得非专业测试...

    SWTBot收集

    SWTBot是一个强大的开源自动化测试框架,专门用于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)应用程序的UI测试。它提供了一种简单而强大的方式来编写可维护的测试,使得开发者和测试人员...

    SWTBot自动化测试学习软件

    SWTBot是一款强大的开源自动化测试工具,主要用于Java GUI应用程序,特别是那些基于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)的应用。它提供了丰富的API,使得测试人员和开发人员能够...

    swtbot学习资料

    SWTBot是一款强大的开源自动化测试框架,主要用于Java GUI应用程序,特别是那些基于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)的应用。它提供了丰富的API,使得编写测试用例变得更加简单...

    SWTBot插件包及例子

    这些例子通常涵盖了各种常见的UI元素和交互场景,例如按钮点击、菜单选择、文本输入等,旨在演示如何使用SWTBot的API来模拟用户操作。 在SWTBot的使用中,有几个关键知识点是开发者需要掌握的: 1. **安装与配置**...

    使用SWTBOT进行GUI自动化测试

    ### 使用SWTBOT进行GUI自动化测试 #### 引言 在软件开发过程中,图形用户界面(GUI)测试一直是挑战之一,特别是在Java世界里。传统的手动测试不仅耗时且容易出错,而自动化测试则可以显著提高测试效率和准确性。...

    swtbot运行原理

    SWTBot是一个开源的自动化测试框架,主要用于Java SWT(Standard Widget Toolkit)和JFace应用程序的UI测试。它为开发者提供了一种简洁的方式来编写可维护的、可靠的用户界面测试。了解SWTBot的运行原理对于有效地...

    swtbot eclipse插件 测试界面

    swtbot eclipse插件 测试界面

    Web页面测试-swtbot

    ### Web页面测试-swtbot #### 一、Web页面测试的重要性与挑战 随着互联网和内部网(Intranet)的迅速发展,Web技术已经成为影响工业、商业、医疗、教育、政府乃至个人生活的关键技术之一。越来越多的传统信息系统...

    SWTBot - SWT/Eclipse functional testing-开源

    SWTBot是用于SWT / RCP应用程序的自动化和测试工具,具有记录和回放脚本的功能。 功能将包括基于文本的脚本,对测试套件的回放,报告和多线程回放的ant支持。

    eclipse4.4.4+gmf+swtbot

    NULL 博文链接:https://mwhgjava.iteye.com/blog/2257771

    scenarioo-e4-swtbot-example-integration

    方案示例-swtbot-e4 结合使用场景和SWTBot来测试和记录Eclipse RCP e4示例应用程序的示例UI测试和Scenarioo集成可在plugins/org.scenarioo.example.e4.test/src/org/scenarioo/example/e4文件夹中找到。构建并运行...

    SWT的详解,例子,介绍

    3. **选择和操作控件**:学习如何通过SWTBOT选取和操作窗口、菜单、按钮、文本框等GUI元素。 4. **事件模拟**:理解如何模拟用户的点击、输入等交互行为,以测试应用程序的功能。 5. **断言和验证**:学习使用...

    pdi-ui-test:基于SWTBot的用于Pentaho数据集成的UI测试的集合

    SWTBot提供了丰富的API,可以模拟用户的操作,如点击按钮、填写表单、选择菜单项等,从而实现对GUI应用的自动化测试。 【Pentaho数据集成(PDI)】PDI,也称为Kettle,是Apache 2.0许可下的一款开源ETL(Extract, ...

    SWT的自动化测试框架

    2. **平台无关性**:由于SWT本身是跨平台的,SWTBot也继承了这一特性,可以在多种操作系统上运行测试,包括Windows、Linux和macOS。 3. **事件模拟**:SWTBot能够模拟各种用户事件,如键盘输入、鼠标点击、窗口操作...

    如何为EclipseJFaceUI运行单元测试Java开发

    SWTBot允许我们模拟用户交互,例如点击按钮、选择菜单项等。 要开始设置单元测试,确保你的项目已经包含了JUnit和SWTBot的依赖。这通常可以通过在Maven或Gradle的build文件中添加对应的依赖来实现。接下来,创建一...

    SWT 整理出的部分资料

    - **Menu**: 创建菜单栏和上下文菜单。 - **ToolBar**: 显示图标按钮,常用于执行常用操作。 3. **布局管理** SWT提供了多种布局管理器,如FillLayout、GridLayout、RowLayout和 MigLayout,用于控制组件在容器...

Global site tag (gtag.js) - Google Analytics