我想知道是否有人可以在這些嘗試中進行擴展,或者有任何其他想法可以使用WebDriver在Firefox,Chrome,Internet Explorer和Safari中捕獲JS錯誤。在Selenium WebDriver中捕獲JavaScript錯誤 - 與瀏覽器無關
這裏是一直到目前爲止已經試過:
嘗試 - 問題:
JSErrorCollector.jar - 做工精細,但它是一個僅限Firefox瀏覽器的解決方案。
將JS注入頁面源代碼 - 我使用WebDriver將window.onerror
代碼注入到頁面的源代碼中,但由於注入太遲而錯過任何初始錯誤。
BrowserMob - 我可以攔截HTTP響應,並計劃注入window.onerror
代碼爲響應體,但筆者一直沒有實現getBody()
方法還沒有,所以只有頭可以被修改,我所知道的。所有響應的身體始終爲空。 (我是在網頁上,筆者談到實施getBody()
,但還沒有發生,我不能找了一遍)
提琴手 - JS將正確注入,但提琴手是僅適用於Windows的Safari所以不會工作。
父/子窗口 - 我使用javascript打開並存儲對測試頁面窗口的引用。 window.onerror code
包含在父窗口中,因此它不會錯過子窗口中的啓動錯誤。我不能在Firefox和Chome中有所作爲。我已經問了一個關於它的問題here。
硒RC - 我還沒有嘗試過,因爲我所有的測試使用webdriver的,但我知道它有某種類似captureNetworkTraffic()
方法,但我不認爲它可以在webdriver的使用。
IE錯誤彈出框 - 我打算使用Firefox/Chrome的父/子解決方案,然後查找IE錯誤彈出窗口。此設置被選中後顯示。彈出窗口是一個本地窗口窗口(我認爲),所以我不能使用硒來訪問它。
閱讀瀏覽器控制檯 - 我找不到在所有瀏覽器中都這樣做的方法。在Chrome中,我找到了一種將控制檯日誌保存到文件然後讀取該文件的方法。這是我得到的。
我想要一個類似於BrowserMob的解決方案,因爲它好像是一個跨瀏覽器解決方案。是否還有其他代理可以加入測試並攔截響應?如果實施getBody()
方法,情況會非常好。我也喜歡父/子解決方案,因爲它也像一個簡單的跨瀏覽器解決方案,但它不適用於IE(parent/child question again)。
感謝您的任何幫助。
據我所知,您列出了當前可用的所有解決方案(2013年7月,Selenium 2.33.0)。 [請參閱官方的Selenium錯誤以獲取更多討論。](http://code.google.com/p/selenium/issues/detail?id=148)在有任何官方API之前,您必須使用這些API解決方案,或者爲您需要支持的每個瀏覽器編寫自己的瀏覽器插件。 –
感謝您的鏈接。 – Ryan
你意識到BrowserMob代理是[開源](https://github.com/lightbody/browsermob-proxy),對不對?什麼阻止你實現缺失的功能並提交拉取請求? – JimEvans