Chrome開發者工具的實用技巧(譯)
最近我比平時多花了點時間在chrome開發者工具上。過程中我發現了一些我以前沒有遇到過的好的特性(至少我沒有主動去研究的;像:blackboxing和asynchronous stacktraces)。因此,我想總結下我認為非常不錯的特性給大家。
- 這個小的放大鏡圖標指向這個元素的CSS的屬性最終是在哪個CSS文件里定義。舉例子來說,選擇“檢查”在頁面上的任意DOM元素,并切換到 “Computed”的子標簽。找到你關心的CSS屬性并點擊放大鏡圖標,就會直接進入對應的css文件(當你的項目是個很大的web應用時,這個功能是 非常有用的).
-
如果想看到XHRs的請求信息,可以選中“Log XMLHttpRequests”的復選框,在“Setting”頻道下的Console部分。在知道這個功能之前,我得設置瀏覽器代理像Burp來完成 這樣的功能。當然,使用代理你可以有機會來修改XHRs在真正到達服務器之前,這是一個很好的方式來完成安全測試。類似的更簡便的方式是使用 “Sources::XHR Breakpoints”并啟用“Any XHR”斷點。
-
現在,假設你工作的web應用正在有規律的發送XHR請求(舉例子,保持當前頁面為最新)并想知道這個定時器在哪里(即什么地方調用 setTimeout()或setInterval())。弄明白這些,你需要切換到“Sources”標簽,并選中“Async”復選框。這會讓你所有 的堆棧繼續執行當遇到setTimeout()的時候,甚至是多層次的嵌套。對于像requestAnimationFrame()和 addEventListener()等同樣使用。你可以找到設置的地方如下:
-
想快速的找到你點擊某個特定的按鈕或者鏈接的運行代碼,只需要在你點擊按鈕前啟用“Event listener breakpoint” Mouse::Click(另外一個在大型web應用時會用到的殺手級的特性):
-
當你使用“Event listener breakpoint :: Mouse :: Click”的時候,你很可能會進入到第三方的代碼庫像jQuery,這時候你就需要花費一些調試的時間來到達真正的事件處理函數。最好的方法是標記 “Blackbox Script”避免進入到第三方的腳本。調試時就再不會進入第三方的腳本庫了,代碼會一直運行到沒有標記blackboxed的文件為止。你可以 blackbox腳本通過右擊調用棧里的第三方庫的文件,并從上下文菜單中選擇“Blackbox Script”即可:
- 你可以跳轉到特定的文件,通過文件名,使用“ctrl-p”(像atom中一樣)
- 你可以跳轉到一個方法,通過方法名(只在當前打開的文件中),使用“ctrl-shift-p”:
- 你可以全文搜索通過”ctrl-shift-f”:
- 你可以使用多個選擇提示來編輯,選中一些字符并按下“ctrl-d”,會根據你按下的次數來選中相應的字符(就像atom那樣).對于像重命名變量非常有用。
- 網站的代碼可以本地存儲,并在開發模式編輯然后可以直接存儲到本地磁盤。實現這個功能,切換到源碼標簽,右鍵點擊“Add Folder to Workspace”,并最后選擇你工程項目的存儲位置即可。此外,右鍵點擊本地映射文件,選擇“Map to Network Resource…”就會加載相應的“網絡”文件了
其它小貼士:
- $0 在console的時候,代表你在頁面選中的元素。
- 你可以執行XPath表達式通過$x(“//p”) 這種方式(當你使用selenium 測試用例和CSS選擇器時并不總有效的時候會非常有用)
我再推薦兩個chrome擴展插件:
-
JSONView 可以轉換并高亮JSON結構給你(甚至允許你展開/收起)。它同樣可以讓URLs有JSON的內容變的可點擊。舉例子:試著訪問http://omahaproxy.appspot.com/all.json 看看安裝前后的對比。
https://api.github.com/ (讓URLs變的簡單). -
JS Error Notifier (non-“spyware” version) 當console打印錯誤時以彈出框方式提示。不幸的是,這個版本會提交私有數據到第三方服務。但是無論怎樣,這個插件幫助我很多。