gpt4 book ai didi

java - UISpec4J 和外部应用程序

转载 作者:行者123 更新时间:2023-11-28 20:54:53 24 4
gpt4 key购买 nike

我正在尝试启动外部应用程序以使用 UISpec4J 进行测试。

以下是我到目前为止提到的问题及其答案:

How to automate a swing java web start application which runs clicking a link into a web application, which is automated with Selenium WebDriver?

Getting all windows using UISpec4J

UISpec4J Capturing modal dialog, before the trigger finish

下面提到的 my.exe 是使用某种工具封装在 exe 中的 Java 应用程序。它在内部使用 jars 并且是 Java GUI 应用程序。

此可执行文件首先启动启动画面,然后是一个对话框以选择您要连接到的位置,然后显示主窗口。除非我可以在我可以连接到的地方实现自动化,否则我将无法获得主窗口。

基于这些问题,我得出了以下代码片段:

        this.setAdapter(new UISpecAdapter() {
@Override
public Window getMainWindow() {
return WindowInterceptor.run(new Trigger() {
@Override
public void run() throws Exception {
// running jnlp by netx launcher
Runtime.getRuntime().exec("C:\\my.exe");
Thread.sleep(10000);
}
});
}
});

在上面的方法中,我简单地得到了“没有显示窗口”的错误。

        this.setAdapter(new UISpecAdapter() {
@Override
public Window getMainWindow() {
final Window[] result = new Window[1];
WindowInterceptor
.init(new Trigger() {
@Override
public void run() throws Exception {
Runtime.getRuntime().exec("C:\\my.exe");
//Thread.sleep(10000);
}
})
//.processTransientWindow()
.process(new WindowHandler() {
public Trigger process(Window window) throws Exception {
result[0] = window;
return Trigger.DO_NOTHING;
}
})
.run();
return result[0];
}
});

在上面的第二种方法中,我仍然收到“未显示窗口”错误,并且控件从未到达重写的“进程”方法。

我提到了 http://www.uispec4j.org/reports/apidocs/org/uispec4j/interception/WindowInterceptor.html推荐的方法是使用 init 来捕获模态对话框是 init\process 序列。

要捕获非模态,建议我们使用以下方法:

   Window window = WindowInterceptor.run(panel.getButton("open").triggerClick());

但我不知道我应该在哪里以及如何调用它..

从我上面提到的第一个问题来看,我们应该能够做到这一点,因为它的答案提到启动 jnlp 应用程序,它是外部应用程序。

我尝试使用 jre 6 update 0,我至少可以运行测试。在 java update 37 中,从我上面提到的第三个问题,我得到 abstract method not implemented 错误。

我做错了什么?有什么想法吗?

我正在使用最新的 UISpec4J 包 - 版本 2.4。

提前致谢,-尼尔。

最佳答案

我是 UISpec4J 的新手,但我猜想它需要在同一个 JVM 中运行才能拦截 GUI 组件并与之交互。当您使用 exec 启动 exe 文件时,它将创建一个新进程和一个新的独立 JVM。如果我正确理解 UISpec4J,那是行不通的。

关于非模态示例,文档说“您将从测试中检索窗口...”,因此在设置方法或测试中应该有效。

关于java - UISpec4J 和外部应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28604028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com