2012-05-23 42 views
5

Tôi đang sử dụng trình quản trị web selen để thực hiện tải xuống bằng firefox. Tại thời điểm này, tập lệnh của tôi chờ một thời gian cụ thể sau khi quá trình tải xuống đã bắt đầu và sau đó đóng firefox. Tôi muốn biết nếu có một cách để cấu hình firefox để tự động đóng trên hoàn thành tải xuống? Hoặc sử dụng trình quản trị web selenium, tôi có thể kiểm tra xem việc tải xuống đã hoàn tất chưa? Tôi không muốn sử dụng bất kỳ tiện ích nào vì nó có thể thêm phụ thuộc vào tập lệnh của tôi. Tôi không thể sử dụng wget/curl vv để tải về các tập tin. Cảm ơn trướctự động đóng firefox khi tải xuống hoàn tất

Trả lời

2

gì Ignacio Contreras nói. Bỏ phiếu cho đường dẫn tải xuống có thể là giải pháp tốt nhất (mạnh nhất).

Alternative # 1:

Sử dụng một FirefoxProfile với Download Statusbar addon. Nó có một tùy chọn thuận tiện để "Tiếp tục tải xuống trong Trình quản lý tải xuống sau khi cửa sổ đã bị đóng" (hoặc một cái gì đó rất giống), để nó giữ cho Firefox chạy ẩn cho đến khi quá trình tải xuống hoàn tất.

Alternative # 2:

Tải file trực tiếp sử dụng this (hoặc bất kỳ công cụ WebDriver thân thiện tương tự khác) ... hoặc this, nếu bạn có thể. Điều đó sẽ hoàn toàn cắt Firefox khỏi quá trình này.

+0

Cũng giống như một điểm dữ liệu, liên kết tới thanh trạng thái tải xuống trỏ đến một plugin cũ hơn. Khi cài đặt nó (bởi vì tôi không chú ý quá nhiều), Symantec không thích bởi vì trang về nó khá đơn giản với phần mềm quảng cáo. Đã cập nhật liên kết: https://addons.mozilla.org/en-us/firefox/addon/download-status-bar/ –

1

Tôi không chắc liệu điều này có hiệu quả hay không, nhưng bạn có cân nhắc khám phá vị trí tải xuống Firefox trhough không? bỏ phiếu cho đến khi bạn thấy quá trình tải xuống đã hoàn tất.

Nếu tôi không sai, khi tệp được tải xuống, sẽ có một tệp bổ sung có phần mở rộng .part.

Something như thế này (giả):

... 

WebDriver poller = new FirefoxDriver() 
poller.get("path to download folder"); 

while ("file with .part extension is present") { 
    // Wait/sleep some time 
    // Refresh poller 
} 

// close downloading firefox instance 
firefox.quit(); 
// close the polling instance 
poller.quit(); 

Hy vọng nó giúp

+0

Cảm ơn Ignacio. Nhưng vấn đề là, tại một thời điểm nhất định, nhiều trường hợp của firefox có thể được chạy. Nhiều phiên bản firefox có thể được tải xuống cùng một vị trí. –

+0

tốt, bạn làm cho mỗi một trong những trường hợp này thăm dò vị trí tải xuống tìm kiếm tệp .part của các tải xuống về sự tôn trọng của chúng (nếu các cá thể được ném từ các cá thể mã java đang chạy). Hoặc nếu tất cả chúng được thực hiện từ cùng một chương trình, bạn có thể tạo một mảng tên tệp để bạn có thể ném một trình điều khiển bỏ phiếu duy nhất đóng mỗi thể hiện firefox khi cần. –

2

Bạn có thể sử dụng lớp WebDriverWait Selenium WebDriver API để thực hiện bỏ phiếu bằng cách sử dụng đoạn mã sau:

 (new WebDriverWait(driver, 180, 10)).until(new ExpectedCondition<Boolean>() { 
      public Boolean apply(WebDriver d) { 
       return !downloadedFilePart.exists(); 
      } 
     }); 

sẽ kiểm tra mã trên cho tập tin với .part chương trình mở rộng được tải cho mỗi 10 giây cho đến khi một trong hai tải hoàn thành hoặc hết thời gian chờ sau 3 phút.

Các vấn đề liên quan