代码之家  ›  专栏  ›  技术社区  ›  Onel Sarmiento

如何使用AutoIT单击java swing控件?

  •  2
  • Onel Sarmiento  · 技术社区  · 7 年前

    我正在尝试使用 自动IT 但是我很难点击一些按钮。

    我想 自动IT 知道控件在哪里,如下面突出显示的,问题是它不会单击控件。

    Java Application Screenshot

    这是我的源代码。。。

        String jacobDllVersionToUse;
        if (System.getProperty("sun.arch.data.model").contains("32")) {
            jacobDllVersionToUse = "jacob-1.18-x86.dll";
        } else {
            jacobDllVersionToUse = "jacob-1.18-x64.dll";
        }
    
        System.out.println(jacobDllVersionToUse);
    
        File file = new File("autoit", jacobDllVersionToUse);
        System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
    
        AutoItX x = new AutoItX();
        String hWnd = "GfcEmulator-Hybrid";
        String exeDir = "C:\\GFC\\resources\\props";
        String exeName = "GFCEmulator_Automation.jar";
    
        Runtime.getRuntime().exec("cmd /c cd " + exeDir + " && " + exeName + "");
        x.winActivate(hWnd);
        x.winWaitActive(hWnd);
    
        x.ControlSetText(hWnd, "", "[CLASS:RichEdit20W; INSTANCE:1]", "____________");
        x.ControlSetText(hWnd, "", "[CLASS:RichEdit20W; INSTANCE:2]", "____________");
        x.ControlSetText(hWnd, "", "[CLASS:RichEdit20W; INSTANCE:3]", "____________");
        x.ControlSetText(hWnd, "", "[CLASS:RichEdit20W; INSTANCE:4]", "____________");
    
        x.controlClick(hWnd, "", "[CLASS:ComboBox; INSTANCE:1]");
        x.controlSend(hWnd, "", "[CLASS:ComboBox; INSTANCE:1]", "{down}+{enter}");
    
        x.sleep(1000);
        x.controlClick(hWnd, "", "[CLASS:Button; INSTANCE:1]"); // Click Connect Button, I already tried every method I know just to make this work but it all fails.
    

    其他详细信息:

    操作系统:Windows 10

    按钮信息:

    Connect Button Information

    1 回复  |  直到 5 年前
        1
  •  1
  •   Onel Sarmiento    5 年前

    自动IT在Java Swing中检测控件时有限制

    我通过遵循AutoIT论坛的以下指南找到了解决方法: Java UDF

    这个UDF为Java应用程序提供了自动化支持。

    该UDF目前自动化了在Swing或抽象窗口工具包(AWT)中开发的独立应用程序和基于浏览器的小程序。