2013-09-30 5 views
0

Существует страница с элементом:Загрузка файла селен WD + Jquery

<div class="block-title-inside"> 
    <a href="javascript:void(0);" class="block-title-link fright" style="display:block; overflow: hidden; width: 105px;">Upload video <span class="blue-arrow-right"></span> 
    <input type="file" name="file" id="videoUpload" class="dpt-mediafile-input-button" style="z-index: 999"></a> 
Videos</div> 

Там нет кнопки «Attach», так при нажатии «Загрузить видео» кнопка показано выше пользователя видит собственное окно ОС с возможностью выбора файл для загрузки.

Я не могу загрузить файл с помощью селена WD и простой код, такой как не работает:

driver.findElement(By.id("videoUpload")).sendKeys("D://Other//sample_videos//barsandtone.FLV"); 
driver.findElement(By.id("videoUpload")).click(); 

Проблема, кажется, что сайт использует JQuery загрузки сценария. Вот части JS кода, связанные с:

  1. http://www.speedyshare.com/DEXEQ/main.js (сам сценарий не может рассматриваться пользователями гостя)
  2. Две ссылки, пожалуйста, отделите: __http: //www.dailypreptalk.com/ компоненты/com_dpt/активы/файлов загрузки/JS/jquery.fileupload.js "> http://www.dailypreptalk.com/components/com_dpt/assets/file-upload/js/vendor/jquery.ui.widget.js_ _ _http: //www.dailypreptalk.com/components/com_dpt/assets/file-upload/js/jquery.fileupload.js

Я попытался запустить код JS:

js.executeScript("document.getElementById('videoUpload').value = 'D://Other//sample_videos//barsandtone.FLV'"); 
js.executeScript("document.getElementById('videoUpload').click()"); 

Но все равно никакого результата. Я также попытался инициализировать окно с помощью JQuery кода, но нет возможности, а также:

js.executeScript("dpt.jQuery('#videoUpload').value = 'D://Other//sample_videos//barsandtone.FLV'"); 
js.executeScript("dpt.jQuery('#videosModal').modal('show');"); 

Я просто не могу получить, как инициализировать JQuery загрузить виджет с укажи путь к файлу.

Спасибо за помощь!

ответ

0

Решение было найдено с помощью функции робота:

import java.awt.*; 
import java.awt.event.KeyEvent; 

Исходный код + FilePath в D: /1.avi:

driver.findElement(By.id("videoUpload")).click(); 
    driver.getWindowHandle(); 
    //type path to your file using robot VK language 
    try { 
     Robot r = new Robot(); 
     r.keyPress(KeyEvent.VK_D); //D char 
     r.keyPress(KeyEvent.VK_SHIFT); // colon char 
     r.keyPress(KeyEvent.VK_SEMICOLON); // colon char 
     r.keyRelease(KeyEvent.VK_SEMICOLON); // colon char 
     r.keyRelease(KeyEvent.VK_SHIFT); // colon char 
     r.keyPress(KeyEvent.VK_BACK_SLASH); // backslash char etc 
     r.keyPress(KeyEvent.VK_1); 
     r.keyPress(KeyEvent.VK_PERIOD); 
     r.keyPress(KeyEvent.VK_A); 
     r.keyPress(KeyEvent.VK_V); 
     r.keyPress(KeyEvent.VK_I); 
     r.keyPress(KeyEvent.VK_ENTER); 
    } catch (AWTException e) { 
     e.printStackTrace(); 
    } 
Смежные вопросы