2016-04-12 18 views
0

我有點絕望在這裏。 幾天來,我一直在嘗試創建一個可以通過我們的網站並檢查Javascript錯誤的網絡抓取工具。刮我們的網站檢查Javascript錯誤

最大的問題是我只知道Java,而且似乎GhostDriver不再被維護。 Ghostdriver的人指的是JbrowserDriver。然而,JBrowserDriver沒有選擇從控制檯收集Javascript錯誤。

然後我嘗試HTMLUnit,這是渴望拋出錯誤,而不是與JavaScript相關的方式。所以在擺弄了半天之後,我投入了HtmlUnit。

我可以恢復到普通的舊WebDriver,但會涉及太多的樣板。

有沒有人有任何建議?

+0

嘗試browsermobproxy與硒和應該給你使用的硒會牽扯太多的樣板...... –

+0

。您可以在頭部注入JavaScript,然後在頁面呈現時調用它。迄今沒有成功。 – Homewrecker

回答

1

您可以在每個窗口的head部分注入一些javascript以將所有錯誤記錄到隱藏的div中。然後Selenium可以從這個div中獲取文本,並將其解析爲頁面上發生的所有錯誤的報告。

例如,給出以下頁面佈局:

<html> 
    <head> 
     <script> 
      window.onerror = function(e) { 
       document.getElementById("hidden-selenium-log").innerText += e.toString() + ";"; 
      } 
     </script> 
    </head> 
    <body> 

     <div id="hidden-selenium-log" style="display: none;"> 
     </div> 

     <div id="broken-button" onclick="unknownFunction()">broken</div> 

    </body> 
</html> 

head標籤會寫所有JavaScript錯誤到DIV hidden-selenium-log腳本。點擊div broken-button將觸發錯誤事件處理程序並將其記錄到隱藏的硒日誌中。

與網頁互動之後,然後你可以不喜歡簡單的東西:

Driver.FindElement(By.Id("hidden-selenium-log")).text.split(";"); 

這將得到隱藏的硒日誌中的文本,然後由分號分開它,一個字我後追加記錄每個錯誤。

+0

我目前正在與JBrowserDriver這種做法一切 – Homewrecker

+0

您遇到這種方法會遇到什麼樣的問題? JavaScript是否被調用? –

+0

I ibsert 然後我執行:driver.executeScript(「return window.jsErrors」);但是我回到空,我確信頁面上有一個Javascript錯誤。 – Homewrecker

0

默認情況下,JavaScript的記錄被禁用。您可以通過設置生成器啓用它。

Settings settings = Settings.builder() 
     .logJavascript(true) 
     .build(); 
JBrowserDriver jBrowserDriver = new JBrowserDriver(settings); 

jBrowserDriver.get("http://example.com"); 

Logs logs = jBrowserDriver.manage().logs(); 
LogEntries logEntries = logs.get("javascript"); 
logEntries.forEach(System.out::println);