无法使用 AutoIT 脚本上传文件

Not able to upload a file using AutoIT script

我对此进行了彻底的搜索,但没有成功。 我的问题是我编写了 AutoIT 脚本,该脚本在 C# 或 Java 代码之外执行时可以完美运行。 脚本是:

WinWaitActive("File Upload") Send("C:\Users\faris\Desktop\RP1.jpg") Sleep(2000) ControlFocus("File Upload","","Button1") Send("{Enter}")

我确定我的代码正在调用完全相同的脚本。 当这个脚本在程序中执行时, 'File Upload' 对话框打开,我可以看到文件路径也显示在 'File name' 字段中。但随后对话框退出,文件未上传。从技术上讲,对话框上的 'Open' 按钮没有被点击。现在,我已经尝试使用 'Control Click' 命令,但它是一样的。 我也尝试过各种类型的等待,但没有用。我对此很陌生,非常感谢任何帮助。

代码示例如下:

IWebElement browse  = driver.FindElement(By.Id("browse"));
        browse.SendKeys(Keys.Enter);
        Thread.Sleep(2000);
Process.Start("C:\Users\faris\Desktop\Autoit2.exe");

"Browse" 是 'Upload file' 按钮,发送 'Enter' 键会调用 Firefox 中的文件上传对话框。

你好,下面是我的工作代码,试试这个

Local $hWnd=WinWait("[CLASS:#32770]","",10)
ControlFocus($hWnd,"","Edit1")
Sleep(2000)
ControlSetText($hWnd, "", "Edit1", "D:\AutoiT\dropme.html")
Sleep(2000)
ControlClick($hWnd, "","Button1");

好的,那么我是如何找到自己的解决方案的。 我仍然不知道是什么导致了失败。 它的工作方式是 我在我的代码中执行了 2 次 AutoIT 脚本。 如上所述,第一次对话框打开并退出,但第二次执行脚本时,文件上传成功。

几天前我遇到了同样的问题,用下面的代码解决了这个问题

第 1 步: Autoit 代码如下

ControlFocus("File Upload","","Edit1")
ControlSetText("File Upload","","Edit1","C:\Users\faris\Desktop\RP1.jpg")
ControlClick("File Upload", "", "Button1")

第 2 步: 将 .au3 转换为 .exe 文件

第三步:将上述代码集成在java中,如下所示

Thread.sleep(2000L);
        Runtime.getRuntime().exec("C:\Users\faris\Desktop\Autoit2.exe");

对我来说效果很好。

AutoIT 脚本:


Local $hWnd=WinWait("[CLASS:#32770]","",10)

ControlFocus($hWnd,"","Edit1")

Sleep(2000)

ControlSetText($hWnd, "", "Edit1", "c:\FIRSTCRY.txt")

Sleep(2000)

ControlClick($hWnd, "","Button2");

还要确保您正在使用 AutoIt 包中提供的查找器工具获取 class 信息,如: