Sha256: 3e62f7530319b0f827a2d8ed1ca4f67264f20d07c95518a54e579dc1b63126c4
Contents?: true
Size: 1.89 KB
Versions: 1
Compression:
Stored size: 1.89 KB
Contents
require 'selenium-webdriver' require 'facets/hash/except' require 'yaml' require 'json' module UserAgent def self.driver options={} options[:browser] ||= :firefox options[:agent] ||= :iphone options[:orientation] ||= :portrait user_agent_string = agent_string_for options[:agent] device_resolution = resolution_for options[:agent], options[:orientation] case options[:browser] when :firefox options[:profile] ||= Selenium::WebDriver::Firefox::Profile.new options[:profile]['general.useragent.override'] = user_agent_string when :chrome options[:switches] ||= [] options[:switches] << "--user-agent=#{user_agent_string}" else raise "WebDriver UserAgent currently only supports :firefox and :chrome." end driver = Selenium::WebDriver.for options[:browser], options.except(:browser, :agent, :orientation) resize_inner_window driver, *device_resolution driver end def self.devices @devices ||= YAML.load_file File.expand_path("../device-info/devices.yaml", __FILE__) end def self.resolution_for device_name, orientation device = devices[downcase_sym device_name][downcase_sym orientation] [device[:width],device[:height]] end def self.agent_string_for device user_agent_string = devices[downcase_sym device][:user_agent] raise "Unsupported user agent: '#{options[:agent]}'." unless user_agent_string user_agent_string end private def self.resize_inner_window driver, width, height if driver.browser == :firefox or :chrome driver.execute_script("window.open(#{driver.current_url.to_json},'_blank');") driver.close driver.switch_to.window driver.window_handles.first end driver.execute_script("window.innerWidth = #{width}; window.innerHeight = #{height};") end def self.downcase_sym sym sym.to_s.downcase.to_sym #to support ruby 1.8.x end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
webdriver-user-agent-0.1.0 | lib/webdriver-user-agent.rb |