Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用AutoIT脚本上载文件_Java_C#_Selenium_File Upload_Autoit - Fatal编程技术网

Java 无法使用AutoIT脚本上载文件

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}”) 我确保我的代码调用的是相同的脚本。 当在程序中执行此脚本时,“文件上载”对话框打开,我可以看到文件路径也显示在“文件名”字段中。但是对话

我对此进行了彻底的研究,但没有结果。 我的问题是我已经编写了AutoIT脚本,当它在C#或Java代码之外执行时,它可以完美地工作。 剧本是:

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");