2015-03-26 4 views
5

Ich möchte den Dateiupload-Prozess, der ein Datei-Upload-Steuerelement in Bootstrap integriert verwendet automatisieren. Ich mache das gleiche mit Webdriver. Unten ist mein Code, aber leider ist es nicht funktioniert:Wie automatisiere ich das Bootstrap Fileupload Upload-Steuerelement mit Webdriver

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

Es ist ein element not visible Fehler geben. Hier

ist das Beispiel des Bootstrap-Fileupload-Steuerelement, die ich versuche, Via JavaScript automate-: auf dieser URL http://markusslima.github.io/bootstrap-filestyle/ Bitte siehe unten Stil-

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

Can u versuchen Sie es mit JavascriptExecutor ??? und versuche, den Wert für den Klassenpfad zu setzen ... oder wenn es nicht hilft, kannst du auchClipboardText setzen und ctrl v mit der Robot-Klasse ausführen ... –

Antwort

2

Ok. Ich denke, dass ich es gelöst habe.

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

der Bootstrap-filestyle.js versteckt ein Eingabeelement, so dass Sie es in dem sichtbaren Bereich zu bewegen und sie dann auf die übliche Weise eingestellt.

so viel Mühe für so eine einfache Lösung.

Hier ist meine ursprüngliche HTML-Code:

<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> 
Verwandte Themen