2012-05-08 42 views
2

我已經繼承了一些Selenium Webdriver代碼(Ubuntu 11.10,Xvfb + Selenium 2.19.0 & Firefox 10.0.2,因爲這是我在可用時間內唯一能夠擊中的組合實際安裝。)使用Selenium WebDriver加速鼠標

注意:我沒有使用舊的硒1.0系統,大多數文檔似乎集中在。

我的測試運行非常緩慢。簡單的鼠標移動超過半秒鐘。

綜觀(無證?!)的/ tmp/native_ff_events_log文件,我發現每個鼠標操作被劃分成更小的部分:

D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(307) ---------- starting mouseMoveTo: 0x7fbad37546a0--------- 
D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(328) From: (39, 169) to: (350, 86) 
D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(329) Distance: 321 steps: 64 
D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (39, 169) 
D14:14:37:070 cpp/webdriver-interactions/interactions_linux_mouse.cpp(231) Type: motion time: 401697248 
D14:14:37:080 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (43, 167) 
D14:14:37:080 cpp/webdriver-interactions/interactions_linux_mouse.cpp(231) Type: motion time: 401697258 
D14:14:37:090 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (48, 166) 
D14:14:37:090 cpp/webdriver-interactions/interactions_linux_mouse.cpp(231) Type: motion time: 401697268 
D14:14:37:100 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (53, 165) 
D14:14:37:100 cpp/webdriver-interactions/interactions_linux_mouse.cpp(231) Type: motion time: 401697278 
D14:14:37:110 cpp/webdriver-interactions/interactions_linux_mouse.cpp(339) Moving to: (58, 163) 

它看起來像有一些刻意放緩,類似到傳統的Selenium的setMouseSpeed(pixels),它將拖放操作分解爲10個像素的子遷移。

我不使用拖放操作。另外,我相信這種方法不再適用於我。

我不相信這些submovements是必要的,刪除它們可能會大大加快運行速度。

有沒有辦法在Selenium 2的Webdriver中增加鼠標步驟的大小?

回答

2

Oddthinking,看源代碼,我發現了兩個值,使mouseMoveTo(),所以慢慢地:

const int stepSizeInPixels = 5; 

http://code.google.com/p/selenium/source/browse/trunk/cpp/webdriver-interactions/interactions_linux_mouse.cpp?r=13310#278

const int timePerEvent = 10 /* ms */; 

http://code.google.com/p/selenium/source/browse/trunk/cpp/webdriver-interactions/interactions_linux_mouse.cpp?r=13310#270

遺憾的是,沒有辦法在運行時級別更改此值,因爲它們是硬編碼的。

當鼠標需要從A點移動到B點時,它使用5個像素步長,間隔爲10ms。從我的測試包中取出一步需要花費大約1.2秒來做一個簡單的點擊()

我重新編譯了firefox擴展,將stepSizeInPixels更改爲50,將timePerEvent更改爲5ms。現在我的測試用具需要18秒,比原來的延長少8秒。

相關問題