2017-08-23 39 views
1

我使用Python和Selenium來測試店面的自定義選項,並注意到隨着時間的推移,測試顯着減慢。在通過選擇組合時測試速度變慢

具體來說,我網頁上有多個<select>標籤,其中每個標籤都有若干<option>標籤作爲子標籤。組合Ajax中的每個更改 - 查詢一個新的價格,Selenium通過顯式等待加載動畫第一次出現然後消失,然後在切換到下一個選項之前等待。

由於我有5個不同的選擇字段,每個選項有3-10個選項,整個測試需要一段時間才能運行。然而,早期組合和後期組合之間似乎存在巨大差異 - 而較早的組合通常加載時間不到一秒,最後一組可能會在更改價格之前顯示加載動畫長達20秒。

由於CPU和內存使用量都適中,因此該問題似乎與測試運行的計算機不同。我很好奇隨着時間的推移,可能會導致性能下降的原因 - 如果有人有想法,我會非常感激。提前致謝!

+0

您用硒控制哪個瀏覽器或驅動程序二進制文件?如果實例化驅動程序二進制文件所需的時間少於等待時間,則可能需要考慮編寫腳本以在每次迭代中重新實例化驅動程序二進制文件。可以將Cookie和其他數據傳遞給驅動程序二進制文件的新實例。 – user14218

+0

我使用Chrome Webdriver作爲PhantomJS似乎加劇了這個問題。您能詳細說明重新實例驅動程序的含義嗎?來自實例的相關數據將是登錄會話和選擇的當前狀態 – Peter

+0

基本上寫腳本退出並創建一個新的Chromedriver的每個組合。 driver.quit():driver = webdriver.Chrome('/ path/to/chromedriver')。 – user14218

回答

0

許多硒的使用者已經通過動畫影響了他們的測試。要單獨測試更改的價格,最好禁用動畫。即使你打算對動畫進行測試,有時候硒的更復雜的體驗/結果也會被分層,並且逐個從測試中移除變量將提供更好的控制,並讓您有機會單獨測試每個圖層。

http://marcgg.com/blog/2015/01/05/css-animations-failing-capybara-specs/

此外,我所經歷的驅動程序二進制文件的某些版本中,成爲該被定位於我的測試環境大多是緩慢的原因。它可以幫助您使用設計模式,該模式爲每個測試實例化一個新的驅動程序二進制文件,並在測試完成時銷燬驅動程序。這樣做會在執行代碼時增加額外的開銷;然而,這是一個可以預測的時間,可以包含在期望值中。