📜  Watir-页面性能(1)

📅  最后修改于: 2023-12-03 14:48:24.830000             🧑  作者: Mango

Watir - 页面性能

简介

Watir是一款流行的Ruby API,用于与Web应用程序进行交互。它允许自动化对Web应用程序进行测试,以及为Web应用程序编写脚本,以便自动执行重复性任务。Watir可以与多种浏览器一起使用,如Chrome,Firefox,Safari和IE等,并提供了许多通用方法来处理文本框,表单,链接和按钮等常见的Web元素。

页面性能是一个重要的Web应用程序质量指标,它关注Web应用程序的响应速度和用户体验。Watir提供了一些方法来测试页面性能参数,如页面加载时间,资源大小和页面渲染时间等。

页面加载时间

Watir提供了driver.network_conditions=方法来模拟实时网络条件。该方法接受一个哈希表,用于设置网络条件。可以设置网络速度和延迟,以便测试网站在不同网络条件下的页面加载时间。

require 'watir'
require 'watir-performance'

include Watir::Performance

browser = Watir::Browser.new :chrome
browser.goto 'https://www.example.com'
browser.performance.summary[:response_time]
#=> 1.2345
browser.close

在上面的例子中,我们使用Watir的Performance模块来测试页面加载时间。我们使用goto方法加载页面,之后使用performance.summary方法来获取页面响应时间。需要注意的是,我们需要安装watir-performance gem才能使用Performance模块。

资源大小

可以使用driver.execute_script方法调用JavaScript代码。通过执行一些JavaScript代码,我们可以获取页面加载的资源的总大小。

require 'watir'

browser = Watir::Browser.new :chrome
browser.goto 'https://www.example.com'

resource_sizes = browser.execute_script(<<~JS)
  const resources = window.performance.getEntriesByType('resource');
  return resources.map((r) => {
    return {
      name: r.name,
      size: r.transferSize || r.encodedBodySize
    };
  });
JS

resource_sizes.each do |r|
  puts "#{r['name']}: #{r['size']}"
end

对于每个资源,我们获取它的名称和大小。需要注意的是,该方法仅返回通过网络加载的资源的大小,并不会考虑那些通过缓存加载的资源。

页面渲染时间

Watir提供了driver.execute_script方法来调用JavaScript代码。可以通过执行一些JavaScript代码来获取页面元素的渲染时间。

require 'watir'

browser = Watir::Browser.new :chrome
browser.goto 'https://www.example.com'

render_times = browser.execute_script(<<~JS)
  return Array.from(document.querySelectorAll('*'), element => {
    const name = element.tagName;
    const render_time =
      window.performance.getEntriesByName(name).reduce((acc, i) => acc + i.duration, 0);
    return {name, render_time};
  });
JS

render_times.each do |r|
  puts "#{r['name']}: #{r['render_time']}ms"
end

对于每个页面元素,我们获取它的名称和渲染时间。需要注意的是,该方法仅返回页面元素的渲染时间,并不会考虑其它因素,如网络延迟等。