1
votes

Getting frozen error while running below mentioned cod. Also find the helpers files. Below is the main file:

require 'spec_helper.rb' require 'rspec_capybara_assignment_helper.rb'

describe 'Open the automationpractices site' , :type => :request do
    it 'Test: Page Content', :page do
        visit "http://automationpractice.com/index.php"
        expect(page).to have_xpath(".//img[contains(@src,'automationpractice.com/img/logo')]")
        expect(page).to have_xpath(".//input[@id='search_query_top']")
        expect(page).to have_link("Contact us")
        expect(page).to have_link("Sign in")
        within('div#block_top_menu') do
            expect(page).to have_link("Women")
            expect(page).to have_link("Dresses")
            expect(page).to have_link("T-shirts")
        end
        within('div#center_column') do
            expect(page).to have_link("Popular")
            expect(page).to have_link("Best Sellers")
        end
        expect(page).to have_content("Automation Practice Website")
    end 
end

Spec_Helper file:-spec_helper.rb

require 'rspec'
require 'capybara/rspec'
require 'capybara/dsl'
require "selenium-webdriver"
require "capybara"
require 'capybara/rspec/matchers'

RSpec.configure do |config|
  config.include Capybara::DSL , :type => :request # to include capybara DSL methods 
  config.include Capybara::RSpecMatchers,:type => :request # to include Rspec matchers available.
end

Capybara.configure do |config|
  config.run_server = false
  config.default_driver = :selenium # which driver to use (selenium / chrome /internet explorer)
  config.default_selector = :css #(by default css selector) # if user want to use xpath, he has to write find(:xpath, <xpath>).click
  config.app_host = "http://automationpractice.com/index.php" # host app
  config.default_max_wait_time = 5 # wait for 4 seconds.
  config.app_host = @url
  config.ignore_hidden_elements = true # will ignore hidden elements on page.
  config.match =:prefer_exact # check for exact match.
end

Rspec Capybara Assignmnet Helper File:

rspec_capybara_assignment_helper.rb def click_on(value) find(value).click end

def link_click(value) 
    click_link(value)
end

def button_click(value) 
    click_button(value)
end

def login_application 
    link_click('Sign in')
    fill_in('email', :with => '[email protected]')
    fill_in('passwd', :with => 'testtest')
    button_click('SubmitLogin')
end

def sign_out 
    link_click('Sign out')
end

def search_product(value) 
    fill_in('search_query_top', :with => value)
    button_click('Search')
    sleep(2)
end

def add_product(value) 
    page.find(:css,'.product-image-container').hover
    sleep(2)
    first("a", :text => "More").click
    sleep(4)
    fill_in('quantity_wanted', :with => '2', visible: false)
    select('M', :from => 'group_1')
    find('button.exclusive').click
    sleep(2)
    first("span", :text => "Continue shopping", wait: 3).click
    sleep(2)
end

def check_locator(value) 
    expect(page).to have_selector(value)
end

Error as below:

Open the automationpractices site Test: Page Content (FAILED - 1)

Failures:

  1. Open the automationpractices site Test: Page Content Failure/Error: visit "http://automationpractice.com/index.php"

    FrozenError: can't modify frozen String

    ./spec/tests/rspec_capybara_assignment.rb:6:in `block (2 levels) in <top (required)>'

Finished in 0.7789 seconds (files took 3.61 seconds to load) 1 example, 1 failure

Failed examples:

rspec ./spec/tests/rspec_capybara_assignment.rb:5 # Open the automationpractices site Test: Page Content

1
Can you show the full error and which line it came frommax pleaner
updated code with the error.Shalu
What version of Capybara are you using?Thomas Walpole
capybara (3.33.0, 3.32.2) capybara-screenshot (1.0.24)Shalu

1 Answers

0
votes

This appears to be related to selenium-webdriver, not capybara itself.

There's an issue about this at https://github.com/SeleniumHQ/selenium/issues/7365

To fix, specify in your gemfile that you want 3.142.4 as a minimum: gem 'selenium-webdriver', '~> 3.142.4'

And then run bundle update selenium-webdriver

That should get this specific issue resolved.