2015-03-26 18 views
5

Chcę zautomatyzować proces przesyłania plików, który używa kontroli przesyłania plików wbudowanej w bootstrap. Robię to samo, używając webdrivera. Poniżej jest mój kod, ale niestety to nie działa:Jak zautomatyzować ładowanie pliku bootstrap fileloadload za pomocą programu webdriver

element=driver.findElement(By.xpath("//[@id='upload']/fieldset/div[2]/input[1]")); 
element.sendKeys(pathToFile); 

To daje błąd element not visible.

Oto przykład bootstrap kontroli FileUpload który próbuję automate- Via JavaScript: na ten adres URL http://markusslima.github.io/bootstrap-filestyle/ proszę zobaczyć poniżej style-

$(":file").filestyle({icon: false}); 
+0

Czy u spróbować z JavascriptExecutor ??? i spróbuj ustawić wartość dla ścieżki klas .. lub jeśli to nie pomoże, możesz również ustawićClipboardText i wykonać ctrl v używając klasy Robot ... –

Odpowiedz

2

Ok. Myślę, że to rozwiązałem.

WebElement fileInput = driver.findElement(By.id("document")); 

    JavascriptExecutor js = (JavascriptExecutor) driver; 
    WebElement element = driver.findElement(By.id("document")); 
    js.executeScript("arguments[0].setAttribute('style', 'left:30px')", 
      element); 

    fileInput.sendKeys(fileName); 

bootstrap-filestyle.js ukryć element wejściowy więc trzeba go przenieść do widocznego obszaru, a następnie ustawić go w standardowy sposób.

tyle problemów dla tak prostego rozwiązania.

Oto mój oryginalny kod html:

<span id="documentUpload"> 
    <input type="file" id="document" name="document" class="notMandatory" onkeypress="return noenter(event)" tabindex="-1" style="position: absolute; left: -9999px;"> 
    <div class="bootstrap-filestyle" style="display: inline;" tabindex="0"> 
     <input type="text" class="input-xlarge" disabled="" autocomplete="off"> 
     <label for="document" class="btn"><i class="icon-folder-open"></i> <span>Upload</span></label> 
    </div> 
</span> 
Powiązane problemy