2012-04-07 120 views
1

我需要在以下場景中自動化Web瀏覽器:通過服務器自動化Web瀏覽器

我有一個服務器和許多客戶端。現在無論何時服務器向客戶端發送命令,客戶端計算機都應該打開Web瀏覽器,瀏覽服務器提供的特定站點,並且在加載該站點後,它應該向服務器發送準確加載該站點所用的時間。 任何工具或語言都會很好。我的客戶端PC運行Ubuntu作爲操作系統。

此外,對於服務器和客戶端之間的通信,我正在考慮採用Java套接字。只是想要一個關於它的信息。我在正確的軌道上嗎?

基本上我需要設置一個自動測試系統,其中從服務器只需一個命令,所有的客戶端打開他們的Web瀏覽器並瀏覽那個要測試的特定網站。 安全威脅並不重要(截至目前),因爲我有對這些測試機器的管理訪問權限。

任何想法/建議是最受歡迎的。

+0

這取決於目標客戶。在我的情況下,它將成爲一個測試中心,它將記錄加載該網頁所需的所有加載時間。沒有安全問題! – Kameron 2012-04-07 16:14:18

+0

所以你有'管理員訪問'這些機器? – 2012-04-07 16:18:16

+1

我刪除了一些噪音。請編輯評論中的信息,回到答案中,以便更明顯(希望您現在明白爲什麼它是相關信息)。 – 2012-04-07 16:22:09

回答

2

這個程序有兩個部分,第一部分是用一些客戶端軟件啓動過程的服務器連接,第二部分是編寫一個客戶端,它將自動執行Web瀏覽器。

即使你的問題的關於Java的,我要去給人一種C++解決方案(任何解決方案是一個多月後比沒有回答好沒辦法解決)

客戶: 編寫一個使用QWebView類的Qt應用程序,實質上可以控制C++應用程序中的瀏覽器。這非常簡單,Qt文檔在這方面有很多幫助。

將此應用程序連接到Tcp Server應用程序(可以使用任何語言從C++,java甚至python編寫)。這個客戶端和這個服務器之間的tcp連接只會用來'發信號'給客戶端開始加載一個特定的頁面。這可能是監視一個文本配置文件,指出哪些客戶端將加載哪個URL(如此...)。這個服務器還應該有一些方法來'發信號'開始向客戶端發送他們各自的啓動信號(我個人通過標準輸入執行此操作)。

網頁內容服務器: 就我個人而言,我會爲這部分使用一個django服務器。這將允許您使用python來指示其他Tcp服務器啓動(我有一個view,當在瀏覽器中提出時會發送「啓動信號」)。使用這種方法的榮耀是,您將能夠擁有另一個接受來自每個客戶端的POST的視圖。每個POST可以有哪個客戶端發送它,加載了哪個url以及需要多長時間。

每個客戶端都能夠跟蹤頁面加載所花費的時間。這可以通過啓動一個計時器來完成,當方法發出後loadStarted()信號發出,並且當QWebView發出loadFinished(bool)信號時停止計時器。然後這些信息可以POST回django服務器(它的定義可以很容易地將信息保存到數據庫中)。

+0

使用這種方法,您仍然可以測試'任何'網站/ websever。您不必在django服務器上託管原始Web內容。實際上,如果您想要,TCP服務器可以管理所有事情,但使用django服務器可以讓您使用已有的「自動」Web瀏覽器來保存,整理,然後非常輕鬆地分析和報告該數據的結果。 – g19fanatic 2012-05-16 14:03:09