Java 无法使用AutoIT脚本上载文件
我对此进行了彻底的研究,但没有结果。 我的问题是我已经编写了AutoIT脚本,当它在C#或Java代码之外执行时,它可以完美地工作。 剧本是:Java 无法使用AutoIT脚本上载文件,java,c#,selenium,file-upload,autoit,Java,C#,Selenium,File Upload,Autoit,我对此进行了彻底的研究,但没有结果。 我的问题是我已经编写了AutoIT脚本,当它在C#或Java代码之外执行时,它可以完美地工作。 剧本是: WinWaitActive(“文件上传”) 发送(“C:\Users\faris\Desktop\RP1.jpg”) 睡眠(2000年) ControlFocus(“文件上载”、“按钮1”) 发送(“{Enter}”) 我确保我的代码调用的是相同的脚本。 当在程序中执行此脚本时,“文件上载”对话框打开,我可以看到文件路径也显示在“文件名”字段中。但是对话
WinWaitActive(“文件上传”)
发送(“C:\Users\faris\Desktop\RP1.jpg”)
睡眠(2000年)
ControlFocus(“文件上载”、“按钮1”)
发送(“{Enter}”)
我确保我的代码调用的是相同的脚本。
当在程序中执行此脚本时,“文件上载”对话框打开,我可以看到文件路径也显示在“文件名”字段中。但是对话框只是退出,文件没有上传。从技术上讲,对话框上的“打开”按钮未被单击。现在,我尝试使用“控制单击”命令,但它完全相同。
我也尝试过各种类型的等待,但都没有用。我是新手,非常感谢您的帮助
下面是代码示例:
IWebElement browse = driver.FindElement(By.Id("browse"));
browse.SendKeys(Keys.Enter);
Thread.Sleep(2000);
Process.Start("C:\\Users\\faris\\Desktop\\Autoit2.exe");
“浏览”是“上传文件”按钮,发送“回车”键将调用Firefox中的文件上传对话框 下面是我的工作代码,试试这个
Local $hWnd=WinWait("[CLASS:#32770]","",10)
ControlFocus($hWnd,"","Edit1")
Sleep(2000)
ControlSetText($hWnd, "", "Edit1", "D:\AutoiT\dropme.html")
Sleep(2000)
ControlClick($hWnd, "","Button1");
好吧,我自己是如何找到解决办法的。 我仍然不知道失败的原因是什么。 它的工作方式是我在代码中执行了两次AutoIT脚本。
第一次对话框打开并如上所述退出,但第二次执行脚本时,文件将成功上载 几天前,我遇到了同样的问题,并用以下代码解决了这个问题 步骤1:自动IT代码如下
ControlFocus("File Upload","","Edit1")
ControlSetText("File Upload","","Edit1","C:\Users\faris\Desktop\RP1.jpg")
ControlClick("File Upload", "", "Button1")
步骤2:将.au3转换为.exe文件
步骤3:在java中集成上述代码,如下所示
Thread.sleep(2000L);
Runtime.getRuntime().exec("C:\\Users\\faris\\Desktop\\Autoit2.exe");
对我来说效果很好。AutoIT脚本:
另外,请确保您正在使用AutoIt包中提供的查找工具查找类信息,如下所示:
Local $hWnd=WinWait("[CLASS:#32770]","",10)
ControlFocus($hWnd,"","Edit1")
Sleep(2000)
ControlSetText($hWnd, "", "Edit1", "c:\FIRSTCRY.txt")
Sleep(2000)
ControlClick($hWnd, "","Button2");