我一直在寻找在Selenium 2中上传文件的解决方案。
问题是,我尝试上传的Web元素有两种使用方式:拖放或单击按钮。没有字段输入框。并不是说我没有尝试使用sendKeys。我已经在按钮以及所有周围的元素上进行了尝试。
此问题的第二部分是我在Windows计算机上编写,但是自动化发生在Linux计算机上。这意味着AutoIt不起作用。这是上传框的HTML。
<div class="up-target" id="up-drop-zone">
<div class="up-drop-zone-pre hidden">
<p>Please choose a folder to upload</p>
</div>
<div class="up-drop-zone-decor">
<p>Drop one or more files here</p>
<p>or</p>
<button name="uploadFile" class="upload">Select Files</button>
<input type="file" id="up-drop-zone-input" name="files[]" multiple="true">
</div>
</div>
我正在使用Java,并且可以使用Selenium之外的其他方法(但是,我只具有选择的Maven存储库)。
谢谢!
不幸的是,由于Selenium不支持<input type="file" multiple>
元素,您目前无法做到这一点(2013年1月,Selenium
2.29.1)。
项目开发人员自己对此有一个功能增强请求,但尚未实现。您可以在此处加注星标以将其在优先级列表中向上移动。
另外,据我所知,您无法真正WebElement
可靠地将文件从桌面拖到。
解决方法可能是使用AutoIT(仅Windows)或Robot
类(也将仅在与您类似的设置上起作用),然后在对话框中“盲目”键入路径:
driver.findElement(By.id("up-drop-zone-input")).click();
Robot r = new Robot();
r.keyPress(KeyEvent.VK_C); // C
r.keyRelease(KeyEvent.VK_C);
r.keyPress(KeyEvent.VK_COLON); // : (colon)
r.keyRelease(KeyEvent.VK_COLON);
r.keyPress(KeyEvent.VK_SLASH); // / (slash)
r.keyRelease(KeyEvent.VK_SLASH);
// etc. for the whole file path
r.keyPress(KeyEvent.VK_ENTER); // confirm by pressing Enter in the end
r.keyRelease(KeyEvent.VK_ENTER);
它很烂,但应该可以。请注意,您可能需要这些:如何使机械手键入:
?并将String转换为KeyEvents(另外还有一些新功能和亮点KeyEvent#getExtendedKeyCodeForChar()
,它们的工作类似,但仅JDK7提供)。
问题内容: 我试图在不实际使用用户输入文件的情况下伪造文件上传。文件的内容将从字符串动态生成。 这可能吗?有人做过吗?有例子/理论可用吗? 澄清一下,我知道如何使用隐藏的iframe和朋友使用AJAX技术上传文件-问题是上传的文件格式不正确。 我正在使用ExtJS,但是jQuery也是可行的,因为ExtJS可以插入其中(ext-jquery-base)。 问题答案: 为什么不只与POST一起使用?
问题内容: 谁能让我知道如何使用Java代码使用Selenium上传文件? 当我单击应用程序中的按钮时,它将在新窗口中打开,可以用来选择上传文件。Silverlight(C#)开发的浏览按钮。 问题答案: 首先确保输入元素可见 正如Mark Collin在此处的讨论中所述: 不要单击浏览按钮,它会触发操作系统级别的对话框并有效地停止测试。 相反,你可以使用: myUploadElement是该元素
谁能让我知道如何通过Java代码使用Selenium上传文件? 当我点击应用程序中的按钮时,它会在新窗口中打开,我可以用它来选择上传文件。Silverlight(C#)开发的浏览按钮。
问题内容: 我正在尝试使用ajax上传文件,这给了我一个错误,其余的数据上传成功了,我尝试了不使用ajax进行文件上传,但是当我尝试通过ajax上传文件时给了我错误,我完全困惑为什么ajax给我问题。这是我的代码。 process.php文件编码在这里。 问题答案: 首先,serialize()函数不适用于文件,您应该使对象成为可通过其发布数据的表单对象,并且可以完美地工作。因为我已经测试过了 请
在我的应用程序中,其中一个页面有更多的下拉框和文本框,我正在尝试验证每个文本框和下拉框的标题,但我无法构造适当的xpath来进行断言。 下面是文本框和下拉框的HTML代码。 文本框和下拉列表的标题如下: 请选择信用类型: 你需要多少? 贷款期限 雇用类型 我无法构造xpath来定位正确的webelement来断言标题,因为所有文本框的类名都是一样的。 找到元素的正确方法是什么?请推荐合适的XPat
在Ubuntu机器上,我尝试自动上传文件,但在使用selenium的Chrome无法做到这一点。我尝试了Robot类和普通发送键方法。 请参考我的代码: StringSelection=new StringSelection(“/home/manojnn/Desktop/OrderDetails.xlsx”);工具箱。getDefaultToolkit()。getSystemClipboard()