当前位置: 首页 > 面试题库 >

如何自动化Swing Java Web Start应用程序,该应用程序运行单击Web应用程序中的链接的操作,该Web应用程序是由Selenium WebDriver自动化的?

孟成文
2023-03-14
问题内容

我有一个典型的Web应用程序,它由Selenium WebDriver自动化。我的问题是自动化的一种特殊情况,其中有一个链接,该链接运行带有Java Web
Start的swing应用程序,并且我想将自动化的控制权转移到Swing应用程序。这可能吗?我可以使用什么工具来做到这一点?而且,我该怎么办?提前致谢。


问题答案:
  1. 点击webdriver中的jnlp文件链接,将jnlp文件保存到磁盘;
  2. 从jnlp运行webstart应用;
  3. 捕获打开的应用程序并将其用于测试

可以通过使用以下库来完成:

  • netx(http://jnlp.sourceforge.net/netx/)-用于从jnlp运行Webstart应用程序
  • uispec4j(http://www.uispec4j.org/)-用于拦截创建的Webstart窗口和操作窗口元素

您可能可以使用其他AWT /
Swing测试工具完成相同的技巧,但是uispec4j允许拦截从jnlp执行的webstart应用程序,您不需要通过调用main()来运行该应用程序,也不需要拥有webstart测试代码存储库中的应用源代码。我在与其他库(包括Jemmy)实现此问题时遇到了问题。

这对我有用:

import java.io.File;    
import javax.swing.JTextField;  
import netx.jnlp.JNLPFile;
import netx.jnlp.Launcher;
import org.junit.Assert;
import org.junit.Test;
import org.uispec4j.Trigger;
import org.uispec4j.UISpecAdapter;
import org.uispec4j.UISpecTestCase;
import org.uispec4j.Window;
import org.uispec4j.interception.WindowInterceptor;

public class WebstartTest extends UISpecTestCase {

    @Test
    public void test() throws Exception {
        // click your webdriver link, save the jnlp file to disk
        final File file = new File("file.jnlp");
        final JNLPFile jnlp = new JNLPFile(file.toURI().toURL());

        // adapter is a UISpec4j way to allow capturing windows created in 
        // non-standard way, exactly what we need.
        this.setAdapter(new UISpecAdapter() {
            @Override
            public Window getMainWindow() {
                return WindowInterceptor.run(new Trigger() {
                    @Override
                    public void run() throws Exception {
                        // running jnlp by netx launcher 
                        Launcher launcher = new Launcher();
                        launcher.setCreateAppContext(false);
                        launcher.launch(jnlp);
                    }
                });
            }
        });

        Window w = this.getMainWindow();

        // verify if window's components are there
        Assert.assertEquals("text", ((JTextField) w.getSwingComponents(JTextField.class)[0]).getText());

        // manipulate window components...
    }
}

注意:uispec4j将截取该窗口,因此它将不可见。对我来说这不是问题,因此我没有调查是否可以看到它。



 类似资料:
  • 问题内容: 我有一个典型的Web应用程序,它由Selenium WebDriver自动化。我的问题是自动化的一个特殊情况,其中有一个链接,该链接运行带有Java Web Start的swing应用程序,并且我想将自动化的控制权转移到Swing应用程序。这可能吗?我可以使用什么工具来做到这一点?而且,我该怎么办?提前致谢。 问题答案: 点击webdriver中的jnlp文件链接,将jnlp文件保存到

  • 我正在尝试将Microsoft Team BOT作为Azure Web应用程序运行-可以在此处找到完整的代码 application.py: 在本地运行时,我可以将端口设置为8000,例如,将ngrok指向localhost,并在我的bot通道注册中指定url,一切正常。我一直在努力让我的代码在Azure中工作,但我就是无法做到这一点。我已将脚本配置为在端口8000上运行,并在应用程序设置中设置参

  • 我正在寻找支持自动化Windows应用程序,如记事本使用Qmetum自动化框架与BDD步骤。我尝试与Appium驱动程序,但没有工作。 Step1:打开记事本Step2:输入“一些文本”[在这里输入链接描述][1] 成功日志:Windows应用程序驱动程序在以下位置侦听请求:http://127.0.0.1:4723/ 按ENTER键退出。 ============================

  • 本地angular应用程序在-http://localhost:4200/alerts;alerttype=renewals;cor=411119上成功运行 到目前为止,我已经将angular dist文件夹复制到遗留应用程序的webcontent文件夹中,并运行应用程序,如下所示 http://localhost:9086/customer/eWeb/alertapp/alerts;alertt

  • 问题内容: 我很想听听您希望如何为Java Web应用程序自动化Javascript压缩。以下是我特别感兴趣的几个方面: 如何 整合? 它是构建工具的一部分,Servlet过滤器,对WAR文件进行后处理的独立程序还是其他工具? 启用和禁用 是否 容易 ?尝试调试缩小的脚本是很不有趣的,但是对于开发人员来说,测试缩小是否不会破坏任何东西也很有用。 它是否可以 透明地 工作,或者是否有我在日常工作中必

  • 问题内容: 我想使用html applet标记在我的Web应用程序中运行简单applet,但是它给出了类似的错误 java.lang.ClassNotFoundException:MyApplet 请给我示例应用程序,如果可能的话..... 问题答案: 问题是applet引擎在您定义的代码库中找不到MyApplet类。 这是因为您在/ WEB-INF / classes目录中进行了分类。该目录受s