2010-06-15 33 views
9

我想知道什麼是保存Selenium訪問網站時檢索到的所有文件的最佳方式。換句話說,當Selenium訪問http://www.google.com時,我想要保存HTML,JavaScript(包括src標記中引用的腳本),圖像以及iframe中包含的潛在內容。如何才能做到這一點?使用Selenium保存整頁內容

我知道getHTMLSource()將返回主框架正文中的HTML內容,但是如何擴展它以下載重新呈現該頁面所需的全套文件。 在此先感謝!

+0

你有什麼發現? – Toolkit 2017-03-22 14:42:54

回答

9

硒是不是專爲這個,你既可以:

  1. 使用getHtmlSource並解析到外部文件,然後你就可以下載並存儲外硒的引用生成的HTML。
  2. 使用Selenium以外的東西來下載和存儲一個網站的離線版本 - 我敢肯定有很多工具可以做到這一點,如果你做搜索。例如WGet可以執行遞歸下載(http://en.wikipedia.org/wiki/Wget#Recursive_download

是否有任何理由要使用Selenium?這是測試策略的一部分,還是隻是想找到一個工具來創建頁面的離線副本?

+0

我們之所以要使用Selenium,是因爲它解析了JavaScript,它對於重構整個頁面(包括廣告流量)至關重要。 – Rick 2010-06-17 21:58:56

+0

在我的情況下,爲了速度的原因,我想用Selenium完成下載。我不得不將頁面加載到Selenium和Chrome,我寧願不再執行所有的HTTP請求,只保存我目前已加載的內容。 – Seanny123 2013-09-05 05:06:40

+1

+1 - WGet被證明是我所需要的完美解決方案。基本上調用一個網址(這是一個動態生成的PDF),目的是將結果保存爲PDF本地。 – 2014-01-24 20:52:02

1

一個好的工具是http://www.httrack.com/,Selenium沒有提供任何API。如果你需要在你的測試用例中保存一個頁面的完整內容到selenium,或許你可以執行httrack作爲一個命令行工具。

感謝

1

如果你真的想使用Selenium那麼你可以做的是模擬Ctrl+S保存的頁面,但隨後更多的工作/困難(也取決於操作系統)來模擬按下Enter或改變的位置您想要保存網頁及其內容的位置。

我想做同樣的事情,但硒意識到,我可以只使用工具,如wget,我真的沒必要只使用Selenium ..所以我結束了使用wget,它是真正強大,它正是我需要的。

這是你將如何使用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) 

傳遞的ARG遊戲只是爲了讓儘可能如果你還在網上可以查看網頁脫機做到這一點。

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

但wget不執行javascript – Toolkit 2017-02-06 19:19:18

+0

我試過這個,它返回的是一個1我的交互式窗口。我的目錄中沒有輸出。 – ShaunO 2017-06-19 23:39:37