Turn your manual testers into automation experts! Request a DemoStart testRigor Free

Selenium with Ruby Cheat Sheet

Driver Initialization

Chrome driver = Selenium::WebDriver.for :chrome
Firefox driver = Selenium::WebDriver.for :firefox
Edge driver = Selenium::WebDriver.for :edge
Safari driver = Selenium::WebDriver.for :safari

Locating Elements

By ID: driver.find_element(id: '<element ID>')
By Name: driver.find_element(name: '<element name>')
By Class Name: driver.find_element(class: '<element class>')
By Tag Name: driver.find_element(tag_name: '<html tag name>')
By CSS Selector: driver.find_element(css: 'Tag#Value of id attribute')
By XPath: driver.find_element(xpath: "//input[@type='submit']")
By Link Text: driver.find_element(link_text: '<link text>')
By Partial Link Text: driver.find_element(partial_link_text: '<link text>')

RSpec

before(:all) do Code executed before all tests
before(:each) do Code executed before each test
it ‘performs a test’ do Code for the test
after(:each) do Code executed after each test
after(:all) do Code executed after all tests

Working with Files

Upload a file:
driver.find_element(id: 'file-upload').send_keys('/path/to/your/file.txt') 
driver.find_element(id: 'file-submit').submit
Read data from a text file:
File.open('MyFile.txt', 'r') do |file|
  file.each_line do |line|
    puts line
  end
end
Read data from a CSV file:
require 'csv' csv_file_path = 'path/to/your/csvfile.csv' CSV.foreach(csv_file_path) do |row|

  puts row.inspect # Print the entire row as an array

  # You can also access individual elements using indices, like row[0], row[1], etc.

end
Read data from an Excel file:
require 'rubyXL'

excel_file_path = 'path/to/your/excelfile.xlsx'

# Load the workbook

workbook = RubyXL::Parser.parse(excel_file_path)

# Access the worksheet by index (0-based)

worksheet = workbook[0]

# Iterate through the rows

worksheet.each do |row|

  # Iterate through the cells in each row

  row.cells.each do |cell|
  
    # Print the cell's value
  
    puts cell.value if cell
  
  end

end

Selenium Navigators

Navigate to a URL driver.navigate.to('<URL>')
Refresh the page driver.navigate.refresh
Navigate forward in browser history driver.navigate.forward
Navigate back in browser history driver.navigate.back

Working with Windows

Get the current window handle:
main_window_handle = driver.window_handle
Get all window handles:
all_window_handles = driver.window_handles
Switch to a specific window:
driver.switch_to.window(window_handle)
Switch to newly created window:
driver.switch_to.new_window(:tab) 
driver.switch_to.new_window(:window)
Close the current window:
driver.close
Set window position:
driver.manage.window.position = Selenium::WebDriver::Point.new(0, 0)
Maximize window:
driver.manage.window.maximize
Minimize window:
driver.manage.window.minimize
Fullscreen window:
driver.manage.window.fullscreen
Take a Screenshot
driver.save_screenshot('image.png')

Working with Frames

Switch to a frame by name or ID:
driver.switch_to.frame('buttonframe')
Switch to a frame by index:
driver.switch_to.frame(1)
Switch to a frame using a WebElement:
iframe = driver.find_element(css: '#modal>iframe') 
driver.switch_to.frame(iframe)
Switch back to the main content:
driver.switch_to.default_content

Working with Dropdowns (Select Elements)

Find the dropdown element:
dropdown = driver.find_element(id: 'dropdown_id')
Create a Select instance for the dropdown element:
select = Selenium::WebDriver::Support::Select.new(dropdown)
Select an option by visible text:
select.select_by(:text, 'Option Text')
Select an option by value:
select.select_by(:value, 'option_value')
Select an option by index:
select.select_by(:index, 1)
Deselect all options (only applicable for multi-select dropdowns):
select.deselect_all

Mouse Actions

Click and hold:
element = driver.find_element(id: 'element_id') 
action_builder.click_and_hold(element).perform
Release a held click:
action_builder.release.perform
Drag and drop:
source = driver.find_element(id: 'source_element_id') 
target = driver.find_element(id: 'target_element_id') 
action_builder.drag_and_drop(source, target).perform
Move to element:
action_builder.move_to(element).perform
Double click:
action_builder.double_click(element).perform
Context click (right-click):
action_builder.context_click(element).perform

Working with Alerts

Switch to an alert:
alert = driver.switch_to.alert
Enter text in an alert:
alert.send_keys('Selenium')
Retrieve alert text:
text = alert.text

Selenium Operations

Launch a Webpage:
driver.navigate.to('<URL>')
Click a button:
search_button = driver.find_element(name: 'btnK') 
search_button.click
Accept an alert pop-up:
driver.switch_to.alert.accept
Print the page title:
title = driver.title 
puts title
Wait for an element to be visible:
wait = Selenium::WebDriver::Wait.new(timeout: 10) 
element = wait.until { driver.find_element(id: 'element_id').displayed? }
Wait for an element to be enabled:
wait = Selenium::WebDriver::Wait.new(timeout: 10) 
element = wait.until { driver.find_element(id: 'element_id').enabled? }
Implicit wait:
driver.manage.timeouts.implicit_wait = 30
Explicit wait:
wait = Selenium::WebDriver::Wait.new(timeout: 10) 
first_result = wait.until { driver.find_element(xpath: '//a/h3') }
Sleep:
sleep(<Time in Seconds>)
Clear the input field text:
search_input = driver.find_element(name: 'q') 
search_input.send_keys('selenium') 
search_input.clear
Disable a field (set the ‘disabled’ attribute):
driver.execute_script("document.getElementsByName('fname')[0].setAttribute('disabled', '');")
Enable a field (remove the ‘disabled’ attribute):
driver.execute_script("document.getElementsByName('fname')[0].removeAttribute('disabled');")

Selenium Grid

Start the hub
java -jar selenium-server-standalone-x.y.z.jar -role hub
Start a node
java -jar selenium-server-standalone-x.y.z.jar -role node -hub http://localhost:4444/grid/register
Server
http://localhost:4444/ui/index.html

Note: Replace "x.y.z" with the version number of your Selenium Server Standalone JAR file.

Alternative: write tests without a single line of code

testRigor is an AI-driven, end-to-end testing solution that empowers QA professionals to create and maintain complex automated tests without requiring coding skills. This comprehensive system supports testing of various platforms, including web, mobile, and desktop applications, and is suitable for functional regression, accessibility, load, and performance testing. By leveraging plain English statements and an advanced AI engine, testRigor provides excellent scalability, minimal maintenance, and faster test execution, setting itself apart from coded automation tools such as Selenium.

Selenium test:

Same test in testRigor:

login
check if page contains "Welcome Peter"

Organizations that have adopted testRigor have experienced significant improvements in their software testing processes, with increased test coverage, reduced defect escape rates, and accelerated release cycles. The platform not only enhances QA teams and delivery processes but also eliminates the need for maintaining testing infrastructure. The unique approach of testRigor allows for seamless collaboration among team members and ensures tests remain valid even after underlying framework changes or refactoring. This superior choice in test automation provides numerous key benefits, including cost savings, improved communication, and detailed test results for seamless debugging.

Join the next wave of functional testing now.
A testRigor specialist will walk you through our platform with a custom demo.
Related Articles

What is InvalidCookieDomainException in Selenium?

Cookies are small pieces of data sent from a website and stored on the user’s computer. These cookies are helpful for ...

Reasons for ScriptTimeoutException in Selenium

Timeouts are the mechanisms Selenium uses to let the WebDriver know how much maximum time to allocate for a particular operation ...

WebDriverException in Selenium: How to Resolve

In Selenium, we use the WebDriver library for automating web browser interactions. The exceptions in Selenium are errors that can ...