Skip to main content

_ruby

TL;DR - Show Me The Code

6-open-new-window/code/ruby/new_window_and_tab.rb
require 'selenium-webdriver'
require 'rspec/expectations'
include RSpec::Matchers

def setup
@driver = Selenium::WebDriver.for(:firefox)
end

def teardown
@driver.quit
end

def run
setup
yield
teardown
end

run do
@driver.get 'https://the-internet.herokuapp.com/windows'
@driver.switch_to.new_window(:window)
@driver.get('https://the-internet.herokuapp.com/typos')
expect(@driver.window_handles.size).to eql 2
end

run do
@driver.get 'https://the-internet.herokuapp.com/windows'
@driver.switch_to.new_window(:tab)
@driver.get('https://the-internet.herokuapp.com/typos')
expect(@driver.window_handles.size).to eql 2
end

Code Walkthrough

Importing Libraries

First, we are pulling in our requisite classes (e.g., selenium-webdriver to drive the browser, and rspec/expectations & RSpec::Matchers for our assertion).

Setup and Teardown

Next, we are setting up and tearing down the browser instance. We're using the setup method to launch a new instance of Firefox with Selenium and storing it in a class variable that we'll use throughout all tests. After our test executes the teardown method will execute. This calls driver.quit() which ends the session by closing the browser instance.

The run method is a custom method that we've defined to execute our test. It's a simple wrapper around the setup and teardown methods. We're using it to keep our test code clean and easy to read.

Open New Window

The first test shows how to open a new window, switch to it, and assert the number of window handles open. They key to this is the @driver.switch_to.new_window(:window) line. Which opens a new window and switches to it.

Open New Tab

The second test shows how to open a new tab, switch to it, and assert the number of window handles open. They key to this is the @driver.switch_to.new_window(:tab) line. Which opens a new tab and switches to it.

Executing the Test

Before executing the test, we need to make sure the required dependencies are declared on the Gemfile file.

Toggle to see the Gemfile file.
6-open-new-window/code/ruby/Gemfile
source 'https://rubygems.org'

gem 'rspec', '~> 3.10'
gem 'selenium-webdriver', '~> 4.24.0'

Finally, we can run the test by executing ruby new_window_and_tab.rb from the command-line.