Ruby + Selenium: Reuse open browser session [HELP]

I' am working with SeleniumDriver in ruby. I have a problem and need
your help. I will explain the idea:

I have 2 scripts in Ruby: LOGIN.rb and SCRIPTB.rb

These scripts are executed in the next order:
a. LOGIN.rb --> I call Selenium Server [selenium = remote_control_addr, remote_control_port ,
platform, url, timeout)].
b. After this, the browser (Firefox) is continuing OPEN.
c. SCRIPT.rb --> I need reuse the browser (Firefox) to execute this

My intention is execute many scripts in only one browser. I can't use
methods and classes between the scripts, because is a limitation of my
platform. The 'good new' is that I can pass variables between the two

I was listening about selenium.get_cookie() and
selenium.create_cookie("arg1","arg2") but I don't understand how to use
between the two scripts.
The other option is using SESSION_ID, but I don't understand how to set
and reuse the variable between the two scripts.

Someone could help me?

Thanks for read the question and help my,


Posted via

Are you certain that you can't use a class to contain these methods?
That sounds like an odd situation.

If you can pass a variable from one script to another, then you should
be able to pass the browser itself as an object.

Alternatively this might help:


Posted via

Tanks Joel, but I need examples in Ruby.

For example:
WebDriver.switchTo().window() in ruby.

In my case I need REAL EXAMPLES that explain:
selenium.get_cookie() AND


Set SESSION_ID in Selenium + Ruby


Posted via

Examples here in Ruby:

Play around with IRB and see what you can do with it.

Perhaps if you explain what your goal is and what your obstacles are in
more detail we might be able to find the best method. My examples tend
to use watir-webdriver since this is what I am familiar with.

If your reason for experimenting with cookies is to match what your
standard profile uses, then that can be achieved with something like
this: :firefox, :profile => 'default'

As far as I know Webdriver can only use windows created by the current
session, since the "attach" method only existed for browsers using a COM
object (IE).

If you're looking to log into a page and then execute a series of other
scripts, this is what I would do:



require 'watir-webdriver'

class BrowserTest

  attr_accessor :name, :pass, @driver #Not technically required

  def initialize
    @name = 'me'
    @pass = 'pass'

  def start
    @driver =

  def login
    @driver.goto 'some-page'
    @driver.text_field(:id => 'name').set @name
    @driver.text_field(:id => 'pass').set @pass
    @driver.button(:name => 'go').click

  def script1
    puts @driver.url

  def script2
    puts @driver.title

  def run
    puts 'Press enter to continue...'
    puts 'Press enter to quit'

  def close


Posted via


Thanks for your response. I'm found a solution for the problem, but
first I explain you my tool and limitations.

The name of the tool is Cacique. This tool was developed by Mercado
Libre testers team. Mercado Libre is similar to Ebay, but the difference
is that was developed in Argentina to Latin America. This is the link:

Cacique is Open Source tool, that working on UNIX OS. You access via a
browser. For Example: Firefox, Chrome, IE, Opera or Safary. In the site,
you have a special workspace when you design your test or make suites
and execute the test.
You can move data between two script with Data Set. Data is for example
a variable or in my case, I found that you can send the DRIVER method.
This is very important. Why? If you have two or more script in a Suite,
you can use and reuse the same browser.

If you need more information about Cacique, you can visit:



Posted via

If you're using multiple scripts you should be using "require" or
"require_relative" to put them together so they can access each other's
objects. You can build them into the same Class or Module even when they
are in seperate files.
As your scripts are executing in the same environment and are able to
pass objects between them, you should look at how Ruby can build a
single object from multiple files.




class MyClass
  def some_method
    #Do stuff


class MyClass
  def some_other_method
    #Do more stuff

require 'File1'
require 'File2'

class_instance =


Posted via