📅  最后修改于: 2023-12-03 14:48:24.830000             🧑  作者: Mango
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
对于每个页面元素,我们获取它的名称和渲染时间。需要注意的是,该方法仅返回页面元素的渲染时间,并不会考虑其它因素,如网络延迟等。