class Watir::Cookies

Public Class Methods

new(control) click to toggle source
# File lib/watir/cookies.rb, line 5
def initialize(control)
  @control = control
end

Public Instance Methods

[](name) click to toggle source

Returns a cookie by name.

@example

browser.cookies[:my_session]
#=> {:name=>"my_session", :value=>"BAh7B0kiD3Nlc3Npb25faWQGOgZFRkk", :domain=>"mysite.com"}

@param [Symbol] name @return <Hash> or nil if not found

# File lib/watir/cookies.rb, line 36
def [](name)
  to_a.find { |c| c[:name] == name.to_s }
end
add(name, value, opts = {}) click to toggle source

Adds new cookie.

@example

browser.cookies.add 'my_session', 'BAh7B0kiD3Nlc3Npb25faWQGOgZFRkk', secure: true

@param [String] name @param [String] value @param [Hash] opts @option opts [Boolean] :secure @option opts [String] :path @option opts [Time, DateTime, NilClass] :expires @option opts [String] :domain

# File lib/watir/cookies.rb, line 55
def add(name, value, opts = {})
  cookie = {
    name: name,
    value: value
  }
  cookie[:secure] = opts[:secure] if opts.key?(:secure)
  cookie[:path] = opts[:path] if opts.key?(:path)
  expires = opts[:expires]
  if expires
    cookie[:expires] = expires.is_a?(String) ? ::Time.parse(expires) : expires
  end
  cookie[:domain] = opts[:domain] if opts.key?(:domain)

  @control.add_cookie cookie
end
clear() click to toggle source

Deletes all cookies.

@example

browser.cookies.clear
# File lib/watir/cookies.rb, line 91
def clear
  @control.delete_all_cookies
end
delete(name) click to toggle source

Deletes cookie by given name.

@example

browser.cookies.delete 'my_session'

@param [String] name

# File lib/watir/cookies.rb, line 80
def delete(name)
  @control.delete_cookie(name)
end
load(file = '.cookies') click to toggle source

TODO: Use :permitted_classes keyword when minimum supported Ruby is 2.6

Load cookies from file

@example

browser.cookies.load '.cookies'

@param [String] file

# File lib/watir/cookies.rb, line 119
def load(file = '.cookies')
  YAML.safe_load(IO.read(file), [::Symbol, ::Time]).each do |c|
    add(c.delete(:name), c.delete(:value), c)
  end
end
save(file = '.cookies') click to toggle source

Save cookies to file

@example

browser.cookies.save '.cookies'

@param [String] file

# File lib/watir/cookies.rb, line 104
def save(file = '.cookies')
  IO.write(file, to_a.to_yaml)
end
to_a() click to toggle source

Returns array of cookies.

@example

browser.cookies.to_a
#=> {:name=>"my_session", :value=>"BAh7B0kiD3Nlc3Npb25faWQGOgZFRkk", :domain=>"mysite.com"}

@return [Array<Hash>]

# File lib/watir/cookies.rb, line 19
def to_a
  @control.all_cookies.map do |e|
    e.merge(expires: e[:expires] ? e[:expires].to_time : nil)
  end
end