谁能让我知道如何用Java代码用Selenium上传文件?
当我点击应用程序中的按钮时,会在新窗口中打开,我可以用它来选择上传文件。这个浏览按钮是由Silverlight(C#)开发的。
首先确保输入元素是可见的。
正如Mark Collin在讨论中所说[这里][1]:
不要点击浏览按钮,这将触发一个操作系统级别的对话 框,并有效地停止你的测试。 >; 相反,你可以使用: >;
driver.findElement(By.id("myUploadElement")).sendKeys("<absolutePathToMyFile>");
myUploadElement是该元素(本例中为按钮)的ID,在sendKeys中你必须指定你要上传的内容(图片、视频等)的**绝对路径。Selenium会帮你完成剩下的工作。
请记住,只有当你发送文件的元素的形式为"<input type="file"> "时,上传才会起作用***。
[1]: https://groups.google.com/forum/#! topic/selenium-users/6lAzHzsuBuA
如果你有一个文本框来输入文件路径,只需使用sendkeys来输入文件路径并点击提交按钮。 如果没有文本框来输入文件路径,只能点击浏览按钮并从弹出的窗口中选择文件,你可以使用AutoIt工具,见下面的步骤来使用AutoIt、
1.从http://www.autoitscript.com/site/autoit/ 下载并安装AutoIt工具
2.打开程序 -> Autoit工具 -> SciTE脚本编辑器。
3.在Autoit编辑器中粘贴以下代码并保存为 "filename.exe"(例如:new.exe)。
然后编译和构建文件,使之成为exe文件(工具→编译)
Autoit代码:
WinWaitActive("File Upload"); Name of the file upload window (Windows Popup Name: File Upload)
Send("logo.jpg"); File name
Send("{ENTER}")
然后从Autoit工具的 "工具 "菜单中进行 "编译和构建"-> SciTE脚本编辑器。
在Eclipse编辑器中粘贴以下Java代码并保存
Java代码:
driver.findElement(By.id("uploadbutton")).click; // open the Upload window using selenium
Thread.sleep("20000"); // wait for page load
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "C:\\Documents and Settings\\new.exe"); // Give path where the exe is saved.