我已经使用watir在网站上创建了记住登录信誉的自动化测试。
在关闭浏览器后再次重新打开并检查是否打开主页的测试场景中。测试重定向到登录,所以我想问:
是watir中的关闭浏览器方法是否清除了测试期间添加的缓存或cookie?
答案 0 :(得分:4)
默认情况下,当调用Watir::Browser.new
时,它会创建一个新的配置文件,其中包含用于Cookie和缓存的新本地存储。
调用browser.quit
或browser.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]
#
然而,我没有看到任何有关缓存的信息。