Skip to content

Cookie code for ruby #2230

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 77 additions & 1 deletion examples/ruby/spec/interactions/cookies_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,81 @@
require 'spec_helper'

RSpec.describe 'Cookies' do
let(:driver) { start_session }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not use an instance variable in the specs.
Do not start and stop a driver outside of the spec_helper.rb.

keep start_session to define which session you need (in this case the default works)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok @titusfortner , this isn't the file i added. I added this

require 'selenium-webdriver'
require 'rspec'

RSpec.describe 'CookiesTest' do
before(:each) do
@driver = Selenium::WebDriver.for :chrome
end

after(:each) do
@driver.quit
end

it 'adds a cookie' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'key', value: 'value')
end

it 'gets a named cookie' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'foo', value: 'bar')
cookie = @driver.manage.cookie_named('foo')
expect(cookie[:value]).to eq('bar')
end

it 'gets all cookies' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'test1', value: 'cookie1')
@driver.manage.add_cookie(name: 'test2', value: 'cookie2')

cookies = @driver.manage.all_cookies
test1 = cookies.find { |c| c[:name] == 'test1' }
test2 = cookies.find { |c| c[:name] == 'test2' }

expect(test1[:value]).to eq('cookie1')
expect(test2[:value]).to eq('cookie2')

end

it 'deletes a cookie by name' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'test1', value: 'cookie1')
@driver.manage.delete_cookie('test1')
expect(@driver.manage.cookie_named('test1')).to be_nil
end

it 'deletes a cookie using cookie object' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
cookie = { name: 'test2', value: 'cookie2' }
@driver.manage.add_cookie(cookie)
@driver.manage.delete_cookie('test2')
expect(@driver.manage.cookie_named('test2')).to be_nil
end

it 'deletes all cookies' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'test1', value: 'cookie1')
@driver.manage.add_cookie(name: 'test2', value: 'cookie2')
@driver.manage.delete_all_cookies
expect(@driver.manage.all_cookies).to be_empty
end

it 'creates SameSite cookies' do
@driver.navigate.to 'http://www.example.com'

cookie_strict = {
  name: 'key',
  value: 'value',
  same_site: 'Strict'
}

cookie_lax = {
  name: 'key',
  value: 'value',
  same_site: 'Lax'
}

@driver.manage.add_cookie(cookie_strict)
@driver.manage.add_cookie(cookie_lax)

puts cookie_strict[:same_site]
puts cookie_lax[:same_site]

end
end

thanks for letting me know. I have halted work on this one. will come back to it later.

before(:each) do
@driver = Selenium::WebDriver.for :chrome
end

after(:each) do
@driver.quit
end

it 'adds a cookie' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'key', value: 'value')
end

it 'gets a named cookie' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'foo', value: 'bar')
cookie = @driver.manage.cookie_named('foo')
expect(cookie[:value]).to eq('bar')
end

it 'gets all cookies' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'test1', value: 'cookie1')
@driver.manage.add_cookie(name: 'test2', value: 'cookie2')

cookies = @driver.manage.all_cookies
test1 = cookies.find { |c| c[:name] == 'test1' }
test2 = cookies.find { |c| c[:name] == 'test2' }

expect(test1[:value]).to eq('cookie1')
expect(test2[:value]).to eq('cookie2')
end

it 'deletes a cookie by name' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'test1', value: 'cookie1')
@driver.manage.delete_cookie('test1')
expect(@driver.manage.cookie_named('test1')).to be_nil
end

it 'deletes a cookie using cookie object' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
cookie = { name: 'test2', value: 'cookie2' }
@driver.manage.add_cookie(cookie)
@driver.manage.delete_cookie('test2')
expect(@driver.manage.cookie_named('test2')).to be_nil
end

it 'deletes all cookies' do
@driver.navigate.to 'https://www.selenium.dev/selenium/web/blank.html'
@driver.manage.add_cookie(name: 'test1', value: 'cookie1')
@driver.manage.add_cookie(name: 'test2', value: 'cookie2')
@driver.manage.delete_all_cookies
expect(@driver.manage.all_cookies).to be_empty
end

it 'creates SameSite cookies' do
@driver.navigate.to 'http://www.example.com'

cookie_strict = {
name: 'key',
value: 'value',
same_site: 'Strict'
}

cookie_lax = {
name: 'key',
value: 'value',
same_site: 'Lax'
}

@driver.manage.add_cookie(cookie_strict)
@driver.manage.add_cookie(cookie_lax)

puts cookie_strict[:same_site]
puts cookie_lax[:same_site]
end
end
42 changes: 40 additions & 2 deletions examples/ruby/spec/interactions/frames_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,44 @@

require 'spec_helper'

RSpec.describe 'Frames' do
let(:driver) { start_session }
RSpec.describe 'Frames Test' do
it 'interacts with elements inside iframes' do
driver = Selenium::WebDriver.for :chrome
driver.manage.timeouts.implicit_wait = 0.5

# Navigate to URL
driver.get('https://www.selenium.dev/selenium/web/iframes.html')

# Switch to iframe using WebElement
iframe = driver.find_element(id: 'iframe1')
driver.switch_to.frame(iframe)
expect(driver.page_source.include?('We Leave From Here')).to be true

# Interact with email field
email_element = driver.find_element(id: 'email')
email_element.send_keys('admin@selenium.dev')
email_element.clear
driver.switch_to.default_content

# Switch to iframe using name
driver.find_element(name: 'iframe1-name')
driver.switch_to.frame(iframe)
expect(driver.page_source.include?('We Leave From Here')).to be true

email = driver.find_element(id: 'email')
email.send_keys('admin@selenium.dev')
email.clear
driver.switch_to.default_content

# Switch to iframe using index
driver.switch_to.frame(0)
expect(driver.page_source.include?('We Leave From Here')).to be true

# Leave frame
driver.switch_to.default_content
expect(driver.page_source.include?('This page has iframes')).to be true

# Quit the browser
driver.quit
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,11 @@ e.g. http://example.com/some404page)
{{< tab header="CSharp" text=true >}}
{{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L32-L34" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome

begin
driver.get 'https://www.example.com'

# Adds the cookie into current browser context
driver.manage.add_cookie(name: "key", value: "value")
ensure
driver.quit
end
{{< tab header="Ruby" text=true >}}
{{< gh-codeblock path="examples\ruby\spec\interactions\cookies_spec.rb#L14-L17" >}}
{{< /tab >}}

{{< tab header="JavaScript" text=true >}}
{{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L18">}}
{{< /tab >}}
Expand Down Expand Up @@ -85,20 +77,11 @@ It returns the serialized cookie data matching with the cookie name among all as
{{< tab header="CSharp" text=true >}}
{{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L40-L44" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome

begin
driver.get 'https://www.example.com'
driver.manage.add_cookie(name: "foo", value: "bar")

# Get cookie details with named cookie 'foo'
puts driver.manage.cookie_named('foo')
ensure
driver.quit
end

{{< tab header="Ruby" text=true >}}
{{< gh-codeblock path="examples\ruby\spec\interactions\cookies_spec.rb#L19-L24" >}}
{{< /tab >}}

{{< tab header="JavaScript" text=true >}}
{{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L35-L38">}}
{{< /tab >}}
Expand Down Expand Up @@ -138,21 +121,11 @@ If browser is no longer available it returns error.
{{< tab header="CSharp" text=true >}}
{{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L51-L64" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome

begin
driver.get 'https://www.example.com'
driver.manage.add_cookie(name: "test1", value: "cookie1")
driver.manage.add_cookie(name: "test2", value: "cookie2")

# Get all available cookies
puts driver.manage.all_cookies
ensure
driver.quit
end

{{< tab header="Ruby" text=true >}}
{{< gh-codeblock path="examples\ruby\spec\interactions\cookies_spec.rb#L26-L37" >}}
{{< /tab >}}

{{< tab header="JavaScript" text=true >}}
{{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L49-L51">}}
{{< /tab >}}
Expand Down Expand Up @@ -193,21 +166,11 @@ It deletes the cookie data matching with the provided cookie name.
{{< tab header="CSharp" text=true >}}
{{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L70-L73" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome

begin
driver.get 'https://www.example.com'
driver.manage.add_cookie(name: "test1", value: "cookie1")
driver.manage.add_cookie(name: "test2", value: "cookie2")

# delete a cookie with name 'test1'
driver.manage.delete_cookie('test1')
ensure
driver.quit
end

{{< tab header="Ruby" text=true >}}
{{< gh-codeblock path="examples\ruby\spec\interactions\cookies_spec.rb#L39-L44" >}}
{{< /tab >}}

{{< tab header="JavaScript" text=true >}}
{{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L61-L62">}}
{{< /tab >}}
Expand Down Expand Up @@ -251,21 +214,11 @@ It deletes all the cookies of the current browsing context.
{{< tab header="CSharp" text=true >}}
{{< gh-codeblock path="examples/dotnet/SeleniumDocs/Interactions/CookiesTest.cs#L92-L97" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome

begin
driver.get 'https://www.example.com'
driver.manage.add_cookie(name: "test1", value: "cookie1")
driver.manage.add_cookie(name: "test2", value: "cookie2")

# deletes all cookies
driver.manage.delete_all_cookies
ensure
driver.quit
end

{{< tab header="Ruby" text=true >}}
{{< gh-codeblock path="examples\ruby\spec\interactions\cookies_spec.rb#L54-L60" >}}
{{< /tab >}}

{{< tab header="JavaScript" text=true >}}
{{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L77-L78">}}
{{< /tab >}}
Expand Down Expand Up @@ -349,21 +302,11 @@ namespace SameSiteCookie {
}
}
{{< /tab >}}
{{< tab header="Ruby" >}}
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome

begin
driver.get 'https://www.example.com'
# Adds the cookie into current browser context with sameSite 'Strict' (or) 'Lax'
driver.manage.add_cookie(name: "foo", value: "bar", same_site: "Strict")
driver.manage.add_cookie(name: "foo1", value: "bar", same_site: "Lax")
puts driver.manage.cookie_named('foo')
puts driver.manage.cookie_named('foo1')
ensure
driver.quit
end
{{< /tab >}}

{{< tab header="Ruby" text=true >}}
{{< gh-codeblock path="examples\ruby\spec\interactions\cookies_spec.rb#L62-L81" >}}
{{< /tab >}}

{{< tab header="JavaScript" text=true >}}
{{< gh-codeblock path="/examples/javascript/test/interactions/cookies.spec.js#L24-L26">}}
{{< /tab >}}
Expand Down
Loading
Loading