class Watir::Cookies

Public Class Methods

new(control) click to toggle source
# File lib/watir-webdriver/cookies.rb, line 6
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-webdriver/cookies.rb, line 37
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-webdriver/cookies.rb, line 56
def add(name, value, opts = {})
  cookie = {
    name: name,
    value: value,
    secure: opts[:secure],
    path: opts[:path],
    expires: opts[:expires],
    domain: opts[:domain]
  }

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

Deletes all cookies.

@example

browser.cookies.clear
# File lib/watir-webdriver/cookies.rb, line 89
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-webdriver/cookies.rb, line 78
def delete(name)
  @control.delete_cookie(name)
end
load(file = '.cookies') click to toggle source

Load cookies from file

@example

browser.cookies.load '.cookies'

@param [String] file

# File lib/watir-webdriver/cookies.rb, line 115
def load(file = '.cookies')
  YAML.load(IO.read(file)).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-webdriver/cookies.rb, line 102
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-webdriver/cookies.rb, line 20
def to_a
  @control.all_cookies.map do |e|
    e.merge(expires: e[:expires] ? to_time(e[:expires]) : nil)
  end
end

Private Instance Methods

to_time(t) click to toggle source
# File lib/watir-webdriver/cookies.rb, line 123
def to_time(t)
  if t.respond_to?(:to_time)
    t.to_time
  else
    ::Time.local t.year, t.month, t.day, t.hour, t.min, t.sec
  end
end