你沒有說你對Selenium不喜歡,但我猜你對JavaScript有信心,所以我的建議是使用CasperJS作爲主要工具。它可以很好地處理單頁網絡應用程序,並附帶自己的測試工具。當使用嵌套的wait
子句時,代碼有時可能會有些複雜;通過確保你不會在每次測試中做得太多,然後如果仍然複雜,重構來處理這個問題。不要忘記設計爲了測試:如果你的選擇器非常複雜,考慮在它周圍增加一個<span id="xxxx">...</span>
,所以你的測試可以直接進行!
您可以同時使用CasperJS和PhantomJS和SlimerJS。我的選擇是對SlimerJS目前,如:
- PhantomJS 1.x的是停留在一箇舊的WebKit(相當於5.1的Safari和Chrome 13),所以測試更多的現代功能是令人沮喪的。
- SlimerJS既可以使用Gecko引擎,也可以直接使用您安裝的Firefox版本。這使您可以使用額外的插件,安全證書等來配置Firefox配置文件。
- SlimerJS是用JavaScript編寫的,因此如果您有這個需求,就更容易破解。
一旦出現PhantomJS 2.0(大約在2013年底,希望),或者如果您的站點不依賴任何最新的HTML5 API,您可以運行CasperJS兩次,以獲得雙重覆蓋。 (順便說一句,PhantomJS自然是無頭; SlimerJS需要使用Xvfb,其中僅是Linux或Mac。)
什麼Selenium爲您提供額外的是你可以控制其他瀏覽器,IE尤其如此。 (當然對於IE來說,你需要運行一臺Windows機器。)Selenium和SlimerJS一樣,需要Xvfb是無頭的(再次,不包括Windows)。 (順便說一句,Selenium docs on supported browsers的年齡沒有更新,但我認爲每個瀏覽器的後續版本至少支持相同的支持)
對Selenium的第一點是它的速度。它非常緩慢。 – user337620
@ user337620我的Selenium腳本受網絡訪問控制,所以我從來沒有覺得它們很慢,除了啓動。我剛剛意識到你的問題是去年八月,而不是今年!你最終選擇了什麼,你對此感到滿意嗎? –
我用PhantomJS使用CasperJS。我也會看看SlimerJS。 – user337620