Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义函数的ruby execute_脚本不会导致任何结果_Javascript_Ruby_Rspec_Automation_Ui Automation - Fatal编程技术网

Javascript 自定义函数的ruby execute_脚本不会导致任何结果

Javascript 自定义函数的ruby execute_脚本不会导致任何结果,javascript,ruby,rspec,automation,ui-automation,Javascript,Ruby,Rspec,Automation,Ui Automation,我有一些关于页面性能细节的自定义JS函数 通过ruby rspec capybara实现自动化 具有下一代码: visit page execute_async_script("function getPagePerformance(){if (window.performance && window.performance.timing) { let timing = window.performance.timing; let timing_o

我有一些关于页面性能细节的自定义JS函数 通过ruby rspec capybara实现自动化 具有下一代码:

    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()")
我已经尝试过ruby实际拥有的所有方法:

execute_async_script
execute_script
evaluate_script

控制台中没有结果 但如果我用手来做的话,他们是 此外,我还尝试在函数内部设置
警报
控制台.log
以检查是否所有行都已执行-所有警报都在测试运行期间显示

我添加了等待以确保页面已加载(只是为了排除有关此案例的问题)


我的问题是为什么这个函数在测试运行时不返回值,因为脚本没有返回任何内容,所以调用不会返回任何内容

下面是一个例子:

计时=执行脚本(%){
var t=窗口、性能、定时;
返回{
pageLoadingTime:t.loadEventEnd-t.navigationStart,
dnsHandshake:t.domainLookupEnd-t.domainLookupStart,
tcp连接:t.connectEnd-t.connectStart,
timeToReachServer:t.responseStart-t.requestStart,
服务器响应时间:t.responseEnd-t.responseStart,
totalNetworkLatency:t.responseEnd-t.fetchStart,
dominInteractive:t.dominInteractive-t.navigationStart
};
})

调用不会返回任何内容,因为脚本不会返回任何内容

下面是一个例子:

计时=执行脚本(%){
var t=窗口、性能、定时;
返回{
pageLoadingTime:t.loadEventEnd-t.navigationStart,
dnsHandshake:t.domainLookupEnd-t.domainLookupStart,
tcp连接:t.connectEnd-t.connectStart,
timeToReachServer:t.responseStart-t.requestStart,
服务器响应时间:t.responseEnd-t.responseStart,
totalNetworkLatency:t.responseEnd-t.fetchStart,
dominInteractive:t.dominInteractive-t.navigationStart
};
})

执行
评估脚本时会发生什么?任何地方有错误吗?检查标准输出和标准错误是否被重定向“并且控制台中没有结果”-我没有看到任何写入控制台的代码。实际上控制台中没有任何内容,没有错误-没有任何内容。下面的答案有助于您评估脚本时会发生什么情况?任何地方有错误吗?检查标准输出和标准错误是否被重定向“并且控制台中没有结果”-我没有看到任何写入控制台的代码。实际上控制台中没有任何内容,没有错误-没有任何内容。下面的答案很有帮助是的,非常感谢。如果不在函数中换行使用,它会有帮助,并且可以工作:“if(window.performance&&window.performance.timing){let timing=window.performance.timing;let timing\u obj={};…return timing\u obj;}”是的,非常感谢。它有帮助,如果在函数中使用而不包装:“if(window.performance&&window.performance.timing){let timing=window.performance.timing;let timing_obj={};…return timing_obj;}”