2011-05-06 56 views
0

我有一個應用程序我硒RC過濾的javascript XHR硒RC

測試在頁面的最後一個瘋狂的問題,幾個電話都通過一個javascript腳本做出的分析web服務這需要調用從字面上分幾秒來響應

Selenium在進入新頁面之前等待這些調用結束,儘管他們的響應與進程的良好執行無關 最終,Selenium拋出TimeOut異常(超時設置爲4分鐘)

我使用硒1.0.1 RC 1.0.1與Firefox 3.5。 16

首先,我不能做: - 更改應用程序(我有沒有對其進行控制) - 改變我的Firefox版本(幾個生產機器都參與其中,我需要這個版本) - 使用的webdriver /硒2(上面的原因)

我認爲攔截JavaScript調用會做的事情,但我無法弄清楚如何做到這一點。 - 我想,有selenium.runScript和selenium.getEval設置的JavaScript變量爲null,但爲時已晚,當他們設置 - 我用壁虎的Object.watch方法時看到的值改變,但沒有成功

我想知道是否有創建大教堂前通過Selenium過濾內容的方式。我認爲它會通過Firefox擴展是可能的,但是這將是我想要做的

或者過去的事情,也許是可以識別所有活動XHR頁面並中止其

我開一堆的新思路

感謝您閱讀

Grooveek

回答

3

很遺憾聽到這個改變應用程序是不是一種選擇 - 當我遇到了類似的情況(通過Ajax稱爲外部分析服務) , 一世用JavaScript編寫了一個模擬服務,並使用我的應用程序版本運行單元測試,使用模擬。 (在這種情況下,我們擔心的不是頁面加載速度,而是通過自動化測試運行來減少分析數據)。這使我可以避免碰到外部站點,但仍然在我的硒測試中驗證我正在呼叫在適當的時候正確調用分析網站的JavaScript庫。

我會建議你的情況是,你寫一個小的HTTP代理(你可能會發現this question的答案有用,但如果我這樣做,我會用Perl或Python做它,因爲這很快寫),它會將請求發送到外部站點,並立即以空白文檔或任何適合您情況的方式作出響應。 (但處理不是針對分析網站通常都要求)

換句話說,不要試圖阻止javascript的直接執行或通過過濾DOM,只是攔截慢外部請求並迅速作出反應。我建議這樣做是因爲攔截整個請求比篩選內容容易得多。

然後,當你啓動Selenium RC服務器,在您的HTTP代理作爲上游代理點吧。由硒服務器啓動的瀏覽器將使用RC服務器作爲其代理,然後它將通過代理過濾所有內容。

通過這種方法,你基本上可以假裝外部網站是你想要的。

+0

感謝您的迴應... 這可以做到這一點,但我應該在我的「無法做到」中提到它。我們正在測試數百個不同的網站,並且我不希望僅爲1個網站干擾其他測試性能...... 這就是爲什麼我在談論javascript解決方案。我希望能夠在每個腳本的基礎上完成相同的Selenium配置 – Grooveek 2011-05-06 14:20:04