如何在Selenium 2.20和java上传文件?

时间:2012-04-07 07:54:31

标签: java selenium webdriver

我浏览了大量的上传线程,但未能找到答案。有人可以请帮助。 我有一个浏览按钮,可以让我选择要从我的电脑上传到网站的文件。以下是网站上浏览按钮所在的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。有人可以建议我能做什么吗?我真的被卡住了。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您必须在文件输入上使用sendKeys(),而不是在按钮上。在示例html中,您应该使用:

findElement(By.id( “contentFileInput”))

而不是

findElement(By.xpath( “// * [@ id中= 'contentFileInputUploader']”))

如果问题仍然存在,请查看此处:

http://saucelabs.com/blog/index.php/2012/03/selenium-tips-uploading-files-in-remote-webdriver