在watir中关闭浏览器方法是否清除测试期间添加的缓存或cookie?

时间:2014-07-07 10:38:23

标签: cookies automated-tests watir watir-webdriver

我已经使用watir在网站上创建了记住登录信誉的自动化测试。

在关闭浏览器后再次重新打开并检查是否打开主页的测试场景中。测试重定向到登录,所以我想问:

是watir中的关闭浏览器方法是否清除了测试期间添加的缓存或cookie?

2 个答案:

答案 0 :(得分:4)

默认情况下,当调用Watir::Browser.new时,它会创建一个新的配置文件,其中包含用于Cookie和缓存的新本地存储。

调用browser.quitbrowser.close时,会破坏临时配置文件。它没有显式处理cookie或缓存,但是在删除临时配置文件时会删除它们。

您可以通过打开irb并执行以下操作来验证这一点:

require 'watir-webdriver'
browser = Watir::Browser.new
browser.goto 'about:cache'

观察Cache Directory的路径。对我来说,它看起来像/var/folders/fq/cjndhx054dj9kr6bls20pnh00000gn/T/webdriver-profile20140707-75724-15rrd9b/Cache

现在在irb中执行以下操作。

browser.quit
browser = Watir::Browser.new
browser.goto 'about:cache'

观察路径不同。

要重新使用cookie,您可以在调用browser.quit之前将cookie存储在实例或全局变量中,然后在实例化新浏览器之后恢复cookie。我使用类似于以下内容的代码进行测试,确保在登录表单上选中“记住我”框。

# First test
browser = Watir::Browser.new
# browser logs in ...
$my_cookies = browser.cookies.to_a
browser.quit

# Second test
browser = Watir::Browser.new
$my_cookies.each do |cookie|
  browser.cookies.add(cookie[:name], cookie[:value])
end
browser.goto 'my-test-site.com'
# test that username is remembered

我相信可以使用特定的配置文件,同时通过创建Selenium::WebDriver::Firefox::Profile.new并将配置文件作为参数传递给Watir::Browser.new :firefox, :profile => <my_profile_object>来维护设置,缓存和Cookie。

有关个人资料的更多信息,请访问Watir Webdriver Firefox Profiles; Cookie信息也可用,但不是很完整。截至2016-12-13,现已更新了链接。

答案 1 :(得分:-1)

看起来.close可以处理cookie,如GitHUb的关闭方法描述中所示

def close
  return if @closed
  @driver.quit
  @closed = true
end
alias_method :quit, :close # TODO: close vs quit

#
# Handles cookies.
#
# @return [Watir::Cookies]
#

然而,我没有看到任何有关缓存的信息。