使用 SWTBOT 在无头模式下运行测试时处理 SWT 对话框
我正在使用 SWT 构建的 eclipse 应用程序上运行 Junit 测试用例。我正在使用 SWTBot 进行 GUI 测试。所以,这是我的问题:
editor.bot().button("Make Excel Template").click();
此代码帮助我在应用程序中生成模板。完成后,它会弹出一个模态对话框,其中包含“确定”消息。但是,我无法让 SWTBot 找到此按钮/小部件/对话框。我不断收到“WidgetNotFoundException”。
有人遇到过这个吗? SWTBot 网站上的官方内容表示,对话框应该在单独的非 UI 线程中运行。然而,提供的示例信息并不丰富。
感谢您的帮助!
I am running a Junit test case on my eclipse application that was built using SWT. I am doing GUI testing using SWTBot. So, here is my problem:
editor.bot().button("Make Excel Template").click();
This code helps me generate a template in my application. Once done, it throws up a Modal Dialog with "OK" as a message. However, I can't get SWTBot to find this button/widget/dialog box. I keep getting a 'WidgetNotFoundException'.
Has someone come across this? official content on the SWTBot website says that dialog boxes should be run in seperate non-UI threads. The examples provided however, aren't very informative.
Appreciate your help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先,您应该在非 UI 线程中运行测试(如果尚未这样做)。
其次,您可以在执行将弹出对话框的操作后使用条件等待模式对话框出现:
这解决了我们的计时问题。
First you should run your tests in a non-UI-Thread (if not already doing so).
Second you can use a condition to wait for your modal dialog to appear after executing the action that will bring the dialog up:
This solved our timing issues.
@carstenlez - 您的解决方案适用于 JFace 对话框。然而,我的应用程序正在使用 MessageBox - 这是一个本机对话框。 SWTBot 不支持本机对话框,所以我几乎没有选择。
@carstenlez - your solution works well for JFace Dialog boxes. My app, however, is making use of a MessageBox - which is a native dialog. SWTBot doesn't support native dialogs, so I am pretty much out of options.