【发布时间】:2012-04-07 07:54:31
【问题描述】:
我浏览了大量的上传线程,但无法找到答案。有人可以帮忙吗。 我有一个浏览按钮,可以让我选择要从我的电脑上传到网站的文件。这是网站上浏览按钮所在的html代码:
<input id="contentFileInput" width="110" type="file" height="30" name="contentFileInput" style="display: none;">
<object id="contentFileInputUploader" width="110" height="30" type="application/x-shockwave-flash" data="../../Scripts/uploadify.swf" style="visibility: visible;">
<param name="quality" value="high">
<param name="wmode" value="opaque">
<param name="allowScriptAccess" value="sameDomain">
<param name="flashvars" value="uploadifyID=contentFileInput&pagepath=/Content/&script=/Content/AsyncUpload/&folder=&width=110&height=30&wmode=opaque&method=POST&queueSizeLimit=999&simUploadLimit=1&fileDesc=*.mpeg;*.mpg;*.avi;*.flv;*.mov;*.mp4;*.wmv&fileExt=*.mpeg;*.mpg;*.avi;*.flv;*.mov;*.mp4;*.wmv&auto=true&sizeLimit=1258291200&fileDataName=Filedata">
</object>
我试过了: WebElement elem = driver.findElement(By.xpath("//*[@id='contentFileInputUploader']")); elem.sendKeys("C:///video/file.flv");
但它什么也没做。当我悬停浏览按钮时,我从 ff 中的 firepath 获得了 xpath。有人可以建议我能做什么吗?我真的被困住了。提前致谢。
【问题讨论】:
-
为什么要向按钮发送密钥?上传文件的流程是什么?首先单击按钮 > 标准上传文件对话框将出现,然后单击确定并将文件上传到您的网站。我说的对吗?
-
该解决方案由另一篇文章提供。我只是指出它不适用于这种特定类型的按钮。您的假设是正确的,但是当对话框出现时,但在这种情况下,click 方法甚至不适用于该对象。即使它确实打开了一个窗口,你也将不再拥有控制权。有人有什么想法吗?
-
也许你应该使用上面的元素 。在 selenium IDE 中试用:
type | contentFileInput | C:\\video\\file.flv。如果它可以工作,那么您可能应该使用 JavaScript 输入您的值:((JavascriptExecutor) driver).executeScript("arguments[0].value = 'C:\\video\\file.flv';", elem); -
嗨,Aleh,我也尝试过 IDE,但即使它无法识别单击该按钮(它不会记录该操作)。我想是因为那个物体是闪光的。我试过 element xpath("//*[@type='file']"));但这会带来一堆错误。我认为这就是为什么萤火虫不将其识别为有效元素的原因。我认为所有这些都与
-
对不起,我没看懂,你试过
type | contentFileInput | C:\\video\\file.flv吗?我建议不要使用 xpath。在您的情况下,最好使用按 ID 查找:driver.FindElement(By.Id("contentFileInput"));