无法使用 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 信息,如:
我对此进行了彻底的搜索,但没有成功。 我的问题是我编写了 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 信息,如: