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

1 cookies automated-tests watir watir-webdriver

我已经使用 watir 创建了用于记住网站中的登录凭据的自动化测试。

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

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

Son*_*eaf 5

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

browser.quitbrowser.close被调用时,它会破坏临时配置文件。它不会明确处理 cookie 或缓存,但是当临时配置文件被删除时,这些都会被消除。

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

require 'watir-webdriver'
browser = Watir::Browser.new
browser.goto 'about:cache'
Run Code Online (Sandbox Code Playgroud)

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

现在在irb.

browser.quit
browser = Watir::Browser.new
browser.goto 'about:cache'
Run Code Online (Sandbox Code Playgroud)

观察路径不同。

要仅重用 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
Run Code Online (Sandbox Code Playgroud)

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

关于配置文件的更多信息可以在Watir Webdriver Firefox Profiles上找到;Cookie信息也可用,但不是很完整。截至 2016 年 12 月 13 日,更新的链接现已包含在内。