2017-09-11 3 views
1

につながる:ルビーexecute_scriptは、私は次のコードを持つルビーRSpecの - カピバラ を経由して自動化を行うページのパフォーマンスの詳細の一部 に関するカスタムJSの機能を持っていない結果

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 

を、コンソール には結果がありません。しかしイムは手動 追加で私はを設定しようとしたことをやっている場合、彼らは以下のとおりです。すべてのメソッドルビーは、実際に持っています10またはconsole.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 timing_obj = {}; ... return timing_obj; } – z4elovek

関連する問題