2

我是 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);
4

1 回答 1

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" [, button [, clicks [, x [, y ]]]]

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

特别是因为参数是可选的,你为什么要传递它呢?只需执行以下操作:

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

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

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

于 2011-04-27T10:00:59.937 回答