javascript - 自定义函数的 ruby​​execute_script 导致没有结果

标签 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_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

并且控制台中没有结果 但如果我手动做的话,他们就是 另外,我尝试在函数内部设置 alertsconsole.log 只是为了检查是否所有行都已执行 - 所有警报都在测试运行期间显示

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

我的问题是为什么这个函数在测试运行时不返回值

最佳答案

该调用不会返回任何内容,因为您的脚本不会返回任何内容。

这是一个例子:

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
  };
})

关于javascript - 自定义函数的 ruby​​execute_script 导致没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46155956/

相关文章:

arrays - 在 Ruby 中将多维数组转换为哈希

ruby-on-rails - 获取 Rspec View 规范以呈现应用程序布局

ruby-on-rails - RSpec 夹具未加载

javascript - 使用公共(public) url 访问 Neo4J

javascript - 如何在angular js中以一种方式绑定(bind)克隆表行

python - 当您还需要缩进换行时,如何使用正则表达式在文本中换行?

rspec View stub 和部分

javascript - SVG 元素的矩形选择(用于 Raphael)

javascript - Node.js:导出语法错误

mysql - MYSQL 数据库错误 : Unable to store a Call ID