2015-03-26 21 views
5

Tôi muốn tự động hóa quá trình tải lên tệp đang sử dụng một điều khiển tải lên tệp được xây dựng trong bootstrap. Tôi đang làm tương tự bằng cách sử dụng trình quản trị web. Dưới đây là mã của tôi, nhưng tiếc là nó không làm việc:Làm thế nào để tự động hóa việc tải lên tập tin tải lên bootstrap bằng cách sử dụng webdriver

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

Nó được đưa ra một lỗi element not visible.

Dưới đây là ví dụ về điều khiển FileUpload bootstrap mà tôi đang cố gắng để automate- Via JavaScript: trên URL này http://markusslima.github.io/bootstrap-filestyle/ Xin vui lòng xem bên dưới còn phong cách

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

u có thể thử nó với JavascriptExecutor ??? và cố gắng thiết lập giá trị cho class path..or nếu nó không giúp bạn cũng có thể setClipboardText và thực hiện ctrl v bằng cách sử dụng lớp Robot ... –

Trả lời

2

Ok. tôi nghĩ rằng tôi đã giải quyết nó.

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 ẩn phần tử nhập để bạn phải di chuyển đến vùng hiển thị rồi đặt theo cách tiêu chuẩn.

rất nhiều rắc rối cho giải pháp đơn giản như vậy.

Đây là mã html ban đầu của tôi:

<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> 
Các vấn đề liên quan