class MediaController::Media
Attributes
page[RW]
Public Class Methods
new(capybara_page, options={})
click to toggle source
# File lib/media_controller/media.rb, line 11 def initialize(capybara_page, options={}) raise "Please supply a valid ID" if options[:id] == "" @page = capybara_page if options[:id] @id = options[:id] @ref = "window['media-#{@id}']" @page.execute_script("#{@ref} = document.getElementById('#{@id}')") elsif options[:reference] @id = Media.random_id @ref = "window['media-#{@id}']" @page.execute_script("#{@ref} = document.evaluate('#{options[:reference].path}', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue") else @id = Media.random_id @ref = "window['media-#{@id}']" @page.execute_script("#{@ref} = document.getElementsByTagName('#{self.class.name.split('::').last.downcase}')[0]") end end
random_id()
click to toggle source
# File lib/media_controller/media.rb, line 7 def Media.random_id rand(10000..99999) end
Public Instance Methods
add_event_listener(event_name)
click to toggle source
# File lib/media_controller/media.rb, line 92 def add_event_listener(event_name) @page.execute_script "window['media-#{@id}-#{event_name}-count'] = 0;" @page.execute_script "window['media-#{@id}-#{event_name}-count-function'] = function() { window['media-#{@id}-#{event_name}-count'] += 1; };" @page.execute_script "#{@ref}.addEventListener('#{event_name}', window['media-#{@id}-#{event_name}-count-function']);" end
current_src()
click to toggle source
# File lib/media_controller/media.rb, line 30 def current_src @page.evaluate_script "#{@ref}.currentSrc;" end
current_time()
click to toggle source
# File lib/media_controller/media.rb, line 46 def current_time @page.evaluate_script "#{@ref}.currentTime;" end
duration()
click to toggle source
# File lib/media_controller/media.rb, line 50 def duration @page.evaluate_script "#{@ref}.duration;" end
event_count(event_name)
click to toggle source
# File lib/media_controller/media.rb, line 88 def event_count(event_name) @page.evaluate_script "window['media-#{@id}-#{event_name}-count'];" end
mute!()
click to toggle source
# File lib/media_controller/media.rb, line 62 def mute! @page.execute_script "#{@ref}.muted = true;" end
muted?()
click to toggle source
# File lib/media_controller/media.rb, line 70 def muted? @page.evaluate_script "#{@ref}.muted;" end
pause()
click to toggle source
# File lib/media_controller/media.rb, line 38 def pause @page.execute_script "#{@ref}.pause();" end
play()
click to toggle source
# File lib/media_controller/media.rb, line 34 def play @page.execute_script "#{@ref}.play();" end
playing?()
click to toggle source
# File lib/media_controller/media.rb, line 54 def playing? add_event_listener('timeupdate') sleep 3 playing = event_count('timeupdate') > 3 remove_event_listener('timeupdate') return playing end
remove_event_listener(event_name)
click to toggle source
# File lib/media_controller/media.rb, line 98 def remove_event_listener(event_name) @page.execute_script "#{@ref}.removeEventListener('#{event_name}', window['media-#{@id}-#{event_name}-count-function']);" @page.execute_script "window['media-#{@id}-#{event_name}-count-function'] = null;" @page.execute_script "window['media-#{@id}-#{event_name}-count'] = null;" end
seek_to(seconds)
click to toggle source
# File lib/media_controller/media.rb, line 42 def seek_to(seconds) @page.execute_script "#{@ref}.currentTime = #{seconds.to_i};" end
size()
click to toggle source
# File lib/media_controller/media.rb, line 82 def size width = @page.evaluate_script "#{@ref}.clientWidth;" height = @page.evaluate_script "#{@ref}.clientHeight;" {width: width, height: height} end
unmute!()
click to toggle source
# File lib/media_controller/media.rb, line 66 def unmute! @page.execute_script "#{@ref}.muted = false;" end
volume()
click to toggle source
# File lib/media_controller/media.rb, line 78 def volume @page.evaluate_script "#{@ref}.volume;" end
volume=(new_volume)
click to toggle source
# File lib/media_controller/media.rb, line 74 def volume=(new_volume) @page.execute_script "#{@ref}.volume = #{new_volume};" end