2012-07-01 40 views
4

我在使用Xvfb的無頭Ubuntu服務器上運行Selenium,如here所述。提高無頭硒的性能

我啓動XVFB與:

#!/bin/bash 
disp=${1:-"99"} 
/usr/bin/Xvfb :$disp -ac 2>&1 | tee /var/log/run-xvfb.log 

而且我啓動硒服務器具有:

#!/bin/bash 
disp=${1:-"0"} 
export DISPLAY=":$disp" && java -jar selenium-server-standalone-2.21.0.jar 2>&1 | tee /var/log/run-selenium-server.log 

我的啓動代碼看起來像:

from selenium import selenium 
sel = selenium('localhost', 4444, '*firefox', 'http://www.google.com') 
sel.start() # This takes forever!!! 
<do stuff> 

我m找到它通常工作,但sel.start()可能需要15分鐘或更長時間才能完成。奇怪的是,日誌文件從不寫,所以我不知道是否有任何錯誤發生。它似乎是「懸掛」的。

當我在我的本地機器上運行這個相同的代碼時,這也是Ubuntu的,但有一個正常的桌面GUI設置,它需要不到一分鐘的時間,所以我知道服務器上會出現嚴重錯誤。我怎樣才能診斷出什麼是錯的,並提高Selenium的可怕表現?

回答

0

你的問題沒有包含足夠的細節給你一個很好的答案,但我可以給你一些提示,可能會有所幫助。沒有日誌,這是一個難以置信的難以調試的問題。

默認情況下,Selenium嘗試模擬真實用戶儘可能接近。這意味着它會等到頁面完全加載之後再做任何事情。緩慢的第三方腳本會導致長時間的掛機。

如果發現默認的硒BaseTest(unittest.TestCase生成)也包含這一行:

self.driver.implicitly_wait(20) 

刪除此行應加速比每個測試頗有幾分。這條線可以被你正常的Selenium設置忽略(因爲它使用了不同的初始化)。

對於進一步的加速,我建議你看看PhantomJS。即使進行了優化,Firefox測試也需要幾分鐘的時間。