2010-06-15 34 views
9

Tôi đã tự hỏi cách tốt nhất để lưu tất cả các tệp được truy xuất khi Selenium truy cập trang web là gì. Nói cách khác, khi Selenium truy cập http://www.google.com Tôi muốn lưu HTML, JavaScript (bao gồm các tập lệnh được tham chiếu trong thẻ src), hình ảnh và nội dung có khả năng chứa trong iframe. Điều này có thể giải quyết như thế nào?Lưu toàn bộ nội dung trang bằng Selenium

Tôi biết getHTMLSource() sẽ trả về nội dung HTML trong phần chính của khung chính, nhưng cách này có thể được mở rộng để tải xuống bộ tệp hoàn chỉnh cần thiết để hiển thị lại trang đó. Cảm ơn bạn trước!

+0

bạn có tìm thấy gì không? – Toolkit

Trả lời

9

Selenium không là thiết kế cho điều này, bạn có thể một trong hai:

  1. Sử dụng getHtmlSource và phân tích kết quả HTML để tham khảo các tập tin bên ngoài, sau đó bạn có thể tải và lưu trữ bên ngoài của Selenium.
  2. Sử dụng một cái gì đó khác ngoài Selenium để tải xuống và lưu trữ phiên bản ngoại tuyến của trang web - Tôi chắc chắn có rất nhiều công cụ có thể thực hiện việc này nếu bạn thực hiện tìm kiếm. Ví dụ: WGet có thể thực hiện tải xuống đệ quy (http://en.wikipedia.org/wiki/Wget#Recursive_download)

Có lý do nào bạn muốn sử dụng Selenium không? Đây có phải là một phần của chiến lược thử nghiệm của bạn hay bạn chỉ muốn tìm một công cụ sẽ tạo bản sao ngoại tuyến của trang?

+0

Lý do tại sao chúng tôi muốn sử dụng Selenium là vì nó phân tích JavaScript cần thiết để xây dựng lại toàn bộ trang (bao gồm lưu lượng truy cập quảng cáo). – Rick

+0

Trong trường hợp của tôi, tôi muốn hoàn thành việc tải xuống với Selenium vì lý do tốc độ. Tôi phải tải trang vào Selenium và Chrome anyways, tôi không muốn thực hiện tất cả các yêu cầu HTTP một lần nữa và chỉ cần lưu những gì tôi hiện đã tải. – Seanny123

+1

+1 - WGet được chứng minh là giải pháp hoàn hảo cho những gì tôi cần. Về cơ bản gọi URL web (là một tệp PDF được tạo động) với mục đích lưu kết quả dưới dạng PDF cục bộ. –

1

Một công cụ tốt cho điều đó là http://www.httrack.com/, Selenium không cung cấp bất kỳ API nào cho điều đó. Trong trường hợp bạn cần phải lưu toàn bộ nội dung của một trang từ trường hợp thử nghiệm của bạn trong selen, có lẽ bạn có thể thực thi httrack như một công cụ dòng lệnh.

Cảm ơn

1

Nếu bạn thực sự muốn sử dụng Selenium sau đó những gì bạn có thể làm là bắt chước Ctrl+S để lưu trang, nhưng sau đó nó là một công việc/khó khăn (cũng OS phụ thuộc) để bắt chước cách nhấn Enter hoặc thay đổi vị trí của nơi bạn muốn lưu trang web và nội dung của nó.

Tôi muốn làm điều tương tự với Selenium nhưng nhận ra rằng tôi chỉ có thể sử dụng các công cụ như wget và tôi thực sự không cần chỉ sử dụng Selenium. Vì vậy, tôi đã sử dụng wget, nó thực sự mạnh mẽ và chính xác những gì tôi cần.

Đây là cách bạn sẽ làm điều đó bằng wget

# Save HTML 
    directory = 'directory_to_save_webpage_content/' 
    url = 'http://www.google.com' 
    wget = "wget -p -k -P {} {}".format(directory, url) 
    os.system(wget) 

Các args qua chỉ là để làm cho nó có thể để xem các trang diễn đàn như là nếu bạn vẫn online.

--page-requisites   -p -- get all images needed to display page 
--convert-links    -k -- convert links to be relative 
--directory-prefix   -P -- specify prefix to save files to 
+0

nhưng wget không thực hiện javascript – Toolkit

+0

Tôi đã cố gắng này và tất cả nó trở lại là một 1 cửa sổ tương tác của tôi. Không có đầu ra trong thư mục của tôi. – ShaunO

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