Need to Restart PhantomjS when it hangs

954 Views Asked by At

I want to restart my Phantomjs Driver when it hangs. I have an example of restarting poltergiest as below:

if driver.is_a?(Capybara::Poltergeist::Driver)
driver.restart
end

I am not using Poltergeist driver. I am using phantomjs driver object like this below:

Capybara::Selenium::Driver.new(app, :browser => :phantomjs)

I need to know how to restart phantomjs driver. I need something like this:

Capybara.page.driver.restart. 
2

There are 2 best solutions below

6
On BEST ANSWER

page.driver.quit should quit the selenium::webdriver instance which should then automatically start a new one the next time the session is used.

1
On

You can use below mentioned method to restart phantomjs

def restart_phantomjs
    puts "-> Restarting phantomjs: iterating through capybara sessions..."
    session_pool = Capybara.send('session_pool')
    session_pool.each do |mode,session|
      msg = "  => #{mode} -- "
      driver = session.driver
      if driver.is_a?(Capybara::Poltergeist::Driver)
        msg += "restarting"
        driver.restart
      else
        msg += "not poltergeist: #{driver.class}"
      end
      puts msg
    end
  end
  module_function :restart_phantomjs
end

Hope this helps :)