无法单击“使用JWinAuto下载文件”按钮

时间:2011-04-27 09:11:39

标签: java automation autoit

我是JWinAuto和AutoIT的新手。 我想单击“文件下载”控件上的“保存”按钮。 我能够将焦点集中在按钮上,但如果当前的文件下载不在焦点上则不会单击。我已将其设置为顶部并激活它以使其集中。但我仍然无法点击按钮。 我在这里附上代码。任何人都可以告诉我,如果我遗失了什么......

            private static final WString BLANK_STRING = new WString("");
            private static final WString FILE_DOWNLOAD = new WString("File Download");
            System.out.println("hi..");
            JAutoITx wrapper = JAutoITx.INSTANCE;
            wrapper.AU3_Init();
            wrapper.AU3_WinWait(FILE_DOWNLOAD, BLANK_STRING, 15);
            wrapper.AU3_WinActivate(FILE_DOWNLOAD, BLANK_STRING);
            System.out.println(wrapper.AU3_WinActive(FILE_DOWNLOAD, BLANK_STRING));
            wrapper.AU3_WinSetOnTop(FILE_DOWNLOAD, BLANK_STRING, 0);
            wrapper.AU3_ControlFocus(FILE_DOWNLOAD, BLANK_STRING, new WString(
                            "[CLASS:Button; INSTANCE:2]"));
            wrapper.AU3_ControlClick(FILE_DOWNLOAD, BLANK_STRING, new WString(
                            "[CLASS:Button; INSTANCE:2]"), BLANK_STRING, 1, 6660, 500);
            wrapper.AU3_Send(new WString("s"), 0);

1 个答案:

答案 0 :(得分:2)

您无需关注ControlClick的窗口即可工作。它也不必被激活,设置在顶部等等。我理解这些只是测试,但ControlClick线本身就足够了。

这一行:

 wrapper.AU3_ControlClick(FILE_DOWNLOAD, BLANK_STRING, new WString("[CLASS:Button; INSTANCE:2]"), BLANK_STRING, 1, 6660, 500);

ControlClick“title”,“text”,“controlID”[,按钮[,点击[,x [,y]]]]

您基本上是这样说:点击按钮左侧6660像素的按钮,按钮顶部的按钮500。该按钮可能会收到消息并检查客户端是否在其自己的坐标内单击。如果它这样做,按钮将必须是6660x500像素大,我猜这里,但我很确定它不是那么大。

特别是因为参数是可选的,你为什么要传递它?做这样的事情:

 wrapper.AU3_ControlClick(FILE_DOWNLOAD, BLANK_STRING, new WString("[CLASS:Button; INSTANCE:2]"), BLANK_STRING, 1, 0, 0);

查看它是否仅适用于ControlClick。作为旁注,一些应用程序会在处理发送到控件的任何命令之前检查窗口是否处于活动状态,但大多数应用程序不会。

如果这不能回答您的问题,那么我想知道“文件下载”按钮所属的应用程序,以便我自己编写测试。