2013-06-03 3 views
0

Я хотел бы загрузить файл с селеном, используя кнопку JavaScriptКак загрузить файл с селеном в Java

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"); 

Цистерны для вашей помощи.

ответ

0

Проблема в том, что ваш вход для type="file" имеет прикрепленный к нему стиль display:none. Если вы удалите его, селен должен иметь возможность взаимодействовать с ним.

+0

Thanks.I не может изменить программное обеспечение я использую то, что я пометил –

+0

@JulienP. , если пользователь не может взаимодействовать с этим конкретным элементом, ни Selenium, ни Selenium. – Arran

+0

это взломать, но вы можете использовать следующее, чтобы установить видимый элемент, прежде чем пытаться отправить ему нажатия клавиш: '((JavascriptExecutor) драйвер) .executeScript (" document.getElementById ('file_input'). SetAttribute ('Style' , 'display: block'); "," ");' – Farlan

0

Он отлично работал с JAVA. Поэтому вы можете попробовать его для JS.

Сначала убедитесь, что входной элемент виден

Не нажимайте на кнопку просмотра, это вызовет диалоговое окно уровня ОС и эффективно остановить ваш тест мертв.

Вместо этого вы можете использовать:

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

myUploadElement является идентификатор этого элемента (кнопка в данном случае) и в SendKeys вы должны указать абсолютный путь содержания вы хотите для загрузки (изображение, видео и т. д.). Селен сделает все для вас.

Имейте в виду, что загрузка будет работать только Если элемент вы отправляете файл должен быть в форме <input type="file">

+0

Спасибо. Я попробовал driver.findElement (By.id ("file_input")). SendKeys ("C: \ test"); Но это не работает. –

+0

Я хотел протестировать этот скрипт, но его не работает ((JavascriptExecutor)).executeScript ("document.getElementById ('file_input ') .setAttribute (' Стиль', 'дисплей: блок');", ""); \t \t driver.findElement (By.id ("file_input")). SendKeys ("C: \ test"); –

+0

FF 13 and i have selenium 2.0 –

Смежные вопросы