Class: Gnawrnip::Screenshot

Inherits:
Object
  • Object
show all
Defined in:
lib/gnawrnip/screenshot.rb

Class Method Summary collapse

Class Method Details

.sessionObject



44
45
46
# File 'lib/gnawrnip/screenshot.rb', line 44

def session
  Capybara.current_session
end

.shotTempfile

Returns:

  • (Tempfile)


51
52
53
54
55
56
# File 'lib/gnawrnip/screenshot.rb', line 51

def shot
  Tempfile.open(['gnawrnip', '.png']) do |fp|
    session.save_screenshot(fp.path)
    fp
  end
end

.take(wait_second = Capybara.default_max_wait_time) ⇒ Tempfile

Screenshot of current capybara session

When browser is still loading page, raise follow exception (maybe…)

Selenium::WebDriver::Error::UnknownError:
  Could not take screenshot of current page - TypeError: c is null

So, to retry during wait_second seconds.

Examples:

image = Gnawrnip::Screenshot.take

Parameters:

  • wait_second (Fixnum) (defaults to: Capybara.default_max_wait_time)

    Second to repeat the retry

Returns:

  • (Tempfile)

    Image file of screenshot



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/gnawrnip/screenshot.rb', line 24

def take(wait_second = Capybara.default_max_wait_time)
  start_time = Time.now

  begin
    shot
  rescue Capybara::NotSupportedByDriverError => e
    raise e
  rescue => e
    if (Time.now - start_time) < wait_second
      sleep(0.3)
      retry
    end

    $stderr.puts "WARNING: Timeout!! Can't take screenshot"
    $stderr.puts "  #{e}"

    nil
  end
end