2017-09-11 69 views
1

我有一些頁面的性能細節 通過紅寶石rspec的,水豚做自動化 有下面的代碼定製JS功能:紅寶石execute_script自定義功能,不會產生任何結果

visit page 
    execute_async_script("function getPagePerformance(){if (window.performance && window.performance.timing) { 
    let timing = window.performance.timing; 
    let timing_obj = {}; 
    /*timing*/ 
    timing_obj.pageLoadingTime = timing.loadEventEnd - timing.navigationStart; 
    timing_obj.dnsHandshake = timing.domainLookupEnd - timing.domainLookupStart; 
    timing_obj.tcpConnect = timing.connectEnd - timing.connectStart; 
    timing_obj.timeToReachServer = timing.responseStart - timing.requestStart; 
    timing_obj.serverResponseTime = timing.responseEnd - timing.responseStart; 
    timing_obj.totalNetworkLatency = timing.responseEnd - timing.fetchStart; 
    timing_obj.domInteractive = performance.timing.domInteractive - performance.timing.navigationStart;return timing_obj;}} 
getPagePerformance()") 

我已經試過了所有方法是紅寶石其實有:

execute_async_script 
execute_script 
evaluate_script 

並且在控制檯 沒有結果,但他們如果IM做手工 在另外我試着設置alertsconsole.log內部功能只是爲了檢查是否所有行執行的話 - 在測試運行

我已經添加了等待,以確保頁面加載(只是爲了排除有關這個案子的問題)

正在顯示的所有警報

我的問題是,爲什麼當測試運行

+0

會發生什麼,當你做'evaluate_script'?任何地方的錯誤? –

+0

檢查標準輸出和標準錯誤是否被重定向 –

+0

「並且在控制檯中沒有結果」 - 我沒有看到寫入控制檯的任何代碼。 –

回答

0

通話,因爲你的腳本不返回任何東西也沒有返回值此函數不返回值。

下面是一個例子:

timing = execute_script(%{ 
    var t = window.performance.timing; 
    return { 
    pageLoadingTime: t.loadEventEnd - t.navigationStart, 
    dnsHandshake: t.domainLookupEnd - t.domainLookupStart, 
    tcpConnect: t.connectEnd - t.connectStart, 
    timeToReachServer: t.responseStart - t.requestStart, 
    serverResponseTime: t.responseEnd - t.responseStart, 
    totalNetworkLatency: t.responseEnd - t.fetchStart, 
    domInteractive: t.domInteractive - t.navigationStart 
    }; 
}) 
+0

是的,非常感謝。它有幫助,並且它在沒有包裝的情況下使用:'if(window.performance && window.performance.timing){let} timing = window.performance.timing; let timer_obj = {}; ... return timing_obj; }' – z4elovek