0

我想使用 JavaScript 按钮上传带有 selenium 的文件

HTML 代码:

<div class="option optionFile">
<label class="editionFieldMandatory" for="file">File</label>
<input id="file_input" class="file" width="120" type="file" height="30" name="file_input" style="display: none;">
<object id="file_inputUploader" width="120" height="30" type="application/x-shockwave-flash" data="/scripts/external_api/uploadify.swf" style="visibility: visible;">
<param name="quality" value="high">
<param name="wmode" value="transparent">
<param name="allowScriptAccess" value="sameDomain">
<param name="flashvars" value="uploadifyID=file_input&pagepath=/content/&buttonText=Browse&script=/utils/upload_library.php?session_name=j2cnrk8ehssuhhi78gq2pdqoa1&folder=/var/www/BO/IHM/resources/documents/help_manuals&width=120&height=30&wmode=transparent&method=POST&queueSizeLimit=999&simUploadLimit=1&hideButton=true&fileDesc=Documents&fileExt=*.aac; *.aif; *.aiff; *.avi; *.bmp; *.conf; *.csv; *.doc; *.docx; *.dot; *.dotm; *.dotx; *.exe; *.flac; *.gif; *.htm; *.html; *.jpeg; *.jpg; *.log; *.lpcm; *.m2t; *.m2ts; *.mhtml; *.mid; *.mka; *.mkv; *.mov; *.mp3; *.mp4; *.mpeg; *.mpg; *.msi; *.ogg; *.pcm; *.pdf; *.png; *.pot; *.pps; *.ppt; *.pub; *.rar; *.tgz; *.tp; *.ts; *.txt; *.vdx; *.vob; *.vsd; *.vss; *.vst; *.vsx; *.vtx; *.wav; *.wma; *.wmv9; *.xls; *.xlsb; *.xlsm; *.xlsx; *.xml; *.zip&auto=true&sizeLimit=15728640&fileDataName=Filedata">
</object>
<div id="file_inputQueue" class="uploadifyQueue"></div>
</div>
</div>

我有一个测试,但它失败了:

WebElement elem = driver.findElement(By.xpath("//input[@id='file_input']"));
            elem.sendKeys("C:\test");

坦克为您提供帮助。

4

2 回答 2

0

问题是您的输入type="file"具有display:none附加的样式。如果您删除它,硒应该能够与之交互。

于 2013-06-03T13:03:20.740 回答
0

它与JAVA完美配合。所以你可以试试JS。

首先确保输入元素可见

不要点击浏览按钮,它会触发一个操作系统级别的对话框并有效地停止你的测试。

相反,您可以使用:

driver.findElement(By.id("myUploadElement")).sendKeys("<absolutePathToMyFile>");

myUploadElement是该元素的 id(在本例中为按钮),在 sendKeys 中,您必须指定要上传的内容(图像、视频等)的绝对路径。Selenium 将为您完成剩下的工作。

请记住,只有当您发送文件的元素应该在表单中时,上传才会起作用<input type="file">

于 2013-06-04T03:12:48.980 回答