webdriver-user-agent 6.6.6 → 7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format doc
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ webdriver-user-agent
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-1.9.3-p429
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in webdriver-user-agent.gemspec
4
- gemspec
4
+ gemspec
data/HISTORY.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Gem History
2
2
 
3
+ ## 7.0 - 8 June 2013
4
+
5
+ * Withdraw deprecation
6
+
7
+ ## 6.6.6 - 15 March 2013
8
+
9
+ * Announce deprecation
10
+
3
11
  ## 0.2.2 - 15 March 2013
4
12
 
5
13
  * Updated iPad user agent
@@ -30,4 +38,4 @@
30
38
 
31
39
  ## 0.0.1 - 25 March 2012
32
40
 
33
- * Initial version of gem released
41
+ * Initial version of gem released
data/README.md CHANGED
@@ -1,3 +1,69 @@
1
1
  # Webdriver::User::Agent
2
2
 
3
- THIS HAS BEEN DEPRECATED
3
+ A helper gem to emulate populate device user agents and resolutions when using webdriver
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'webdriver-user-agent'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install webdriver-user-agent
18
+
19
+ ## Usage
20
+
21
+ provides a UserAgent.driver method to return a new web-driver with user agent and screen resolution mimicking a mobile device.
22
+
23
+ ### Options
24
+
25
+ * :browser
26
+ * :firefox (default)
27
+ * :chrome
28
+ * :agent
29
+ * :iphone (default)
30
+ * :ipad
31
+ * :android_phone
32
+ * :android_tablet
33
+ * :random
34
+ * :orientation
35
+ * :portrait (default)
36
+ * :landscape
37
+
38
+ ### Example using selenium-webdriver
39
+
40
+ require 'selenium-webdriver'
41
+ require 'webdriver-user-agent'
42
+ driver = UserAgent.driver(:browser => :chrome, :agent => :iphone, :orientation => :landscape)
43
+ driver.get 'http://tiffany.com'
44
+ driver.current_url.should == 'http://m.tiffany.com/International.aspx'
45
+
46
+ ### Example using random user agent
47
+
48
+ require 'selenium-webdriber'
49
+ require 'webdriver-user-agent'
50
+ driver = UserAgent.driver(:agent => :random)
51
+ driver.execute_script('return navigator.userAgent')
52
+ # random agent like "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1"
53
+
54
+ ### Example using watir-webdriver
55
+
56
+ require 'watir-webdriver'
57
+ require 'webdriver-user-agent'
58
+ driver = UserAgent.driver(:browser => :chrome, :agent => :iphone, :orientation => :landscape)
59
+ browser = Watir::Browser.new driver
60
+ browser.goto 'tiffany.com'
61
+ browser.url.should == 'http://m.tiffany.com/International.aspx'
62
+
63
+ ## Contributing
64
+
65
+ 1. Fork it
66
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
67
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
68
+ 4. Push to the branch (`git push origin my-new-feature`)
69
+ 5. Create new Pull Request
@@ -1,66 +1,23 @@
1
- require 'selenium-webdriver'
2
- require 'facets/hash/except'
3
- require 'yaml'
4
- require 'json'
1
+ require 'webdriver-user-agent/core_ext/symbol'
2
+ require 'webdriver-user-agent/driver'
5
3
 
6
4
  module Webdriver
7
5
  module UserAgent
8
- def self.driver options={}
9
- options[:browser] ||= :firefox
10
- options[:agent] ||= :iphone
11
- options[:orientation] ||= :portrait
12
-
13
- user_agent_string = agent_string_for options[:agent]
14
-
15
- case options[:browser]
16
- when :firefox
17
- options[:profile] ||= Selenium::WebDriver::Firefox::Profile.new
18
- options[:profile]['general.useragent.override'] = user_agent_string
19
- when :chrome
20
- options[:switches] ||= []
21
- options[:switches] << "--user-agent=#{user_agent_string}"
22
- else
23
- raise "WebDriver UserAgent currently only supports :firefox and :chrome."
24
- end
25
- driver = Selenium::WebDriver.for options[:browser], options.except(:browser, :agent, :orientation)
26
- resize_inner_window(driver, *resolution_for(options[:agent], options[:orientation])) unless (downcase_sym(options[:agent]) == :random)
27
- driver
6
+ def self.driver options={}
7
+ Driver.instance.for options
28
8
  end
29
9
 
30
10
  def self.devices
31
- @devices ||= YAML.load_file File.expand_path("../device-info/devices.yaml", __FILE__)
11
+ Driver.instance.devices
32
12
  end
33
13
 
34
14
  def self.resolution_for device_name, orientation
35
- device = devices[downcase_sym device_name][downcase_sym orientation]
36
- [device[:width],device[:height]]
15
+ Driver.instance.resolution_for device_name, orientation
37
16
  end
38
17
 
39
18
  def self.agent_string_for device
40
- user_agent_string = downcase_sym(device) == :random ? random_user_agent : devices[downcase_sym device][:user_agent]
41
- raise "Unsupported user agent: '#{options[:agent]}'." unless user_agent_string
42
- user_agent_string
19
+ Driver.instance.agent_string_for device
43
20
  end
44
21
 
45
- private
46
-
47
- def self.resize_inner_window driver, width, height
48
- if driver.browser == :firefox or :chrome
49
- driver.execute_script("window.open(#{driver.current_url.to_json},'_blank');")
50
- driver.close
51
- driver.switch_to.window driver.window_handles.first
52
- end
53
- driver.execute_script("window.innerWidth = #{width}; window.innerHeight = #{height};")
54
- end
55
-
56
- def self.downcase_sym sym
57
- sym.to_s.downcase.to_sym #to support ruby 1.8.x
58
- end
59
-
60
- def self.random_user_agent
61
- File.foreach(File.expand_path("../device-info/user_agents.txt", __FILE__)).each_with_index.reduce(nil) { |picked,pair|
62
- rand < 1.0/(1+pair[1]) ? pair[0] : picked }
63
- end
64
-
65
22
  end
66
- end
23
+ end
@@ -0,0 +1,47 @@
1
+ require 'facets/hash/except'
2
+
3
+ module Webdriver
4
+ module UserAgent
5
+ class BrowserOptions
6
+
7
+ def initialize(opts, user_agent_string)
8
+ @options = opts
9
+ options[:browser] ||= :firefox
10
+ options[:agent] ||= :iphone
11
+ options[:orientation] ||= :portrait
12
+ initialize_for_browser(user_agent_string)
13
+ end
14
+
15
+ def method_missing(*args, &block)
16
+ m = args.first
17
+ value = options[m]
18
+ super unless value
19
+ value.downcase
20
+ end
21
+
22
+ def browser_options
23
+ options.except(:browser, :agent, :orientation)
24
+ end
25
+
26
+ private
27
+
28
+ def options
29
+ @options ||= {}
30
+ end
31
+
32
+ def initialize_for_browser(user_agent_string)
33
+ case options[:browser]
34
+ when :firefox
35
+ options[:profile] ||= Selenium::WebDriver::Firefox::Profile.new
36
+ options[:profile]['general.useragent.override'] = user_agent_string
37
+ when :chrome
38
+ options[:switches] ||= []
39
+ options[:switches] << "--user-agent=#{user_agent_string}"
40
+ else
41
+ raise "WebDriver UserAgent currently only supports :firefox and :chrome."
42
+ end
43
+
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,8 @@
1
+
2
+ if RUBY_VERSION =~ /1\.8/
3
+ class Symbol
4
+ def downcase
5
+ self.to_s.downcase.to_sym
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,40 @@
1
+ require 'yaml'
2
+
3
+ module Webdriver
4
+ module UserAgent
5
+ module Devices
6
+
7
+ def devices
8
+ YAML.load_file devices_file
9
+ end
10
+
11
+ def resolution_for(device_name, orientation)
12
+ device = devices[device_name.downcase][orientation.downcase]
13
+ [device[:width],device[:height]]
14
+ end
15
+
16
+ def agent_string_for(device)
17
+ device = (device ? device.downcase : :iphone)
18
+ user_agent_string = (device == :random ? random_user_agent : devices[device][:user_agent])
19
+ raise "Unsupported user agent: '#{device}'." unless user_agent_string
20
+ user_agent_string
21
+ end
22
+
23
+ private
24
+
25
+ def random_user_agent
26
+ File.foreach(user_agents_file).each_with_index.reduce(nil) do |picked,pair|
27
+ rand < 1.0/(1+pair[1]) ? pair[0] : picked
28
+ end
29
+ end
30
+
31
+ def user_agents_file
32
+ File.expand_path("../../device-info/user_agents.txt", __FILE__)
33
+ end
34
+
35
+ def devices_file
36
+ File.expand_path("../../device-info/devices.yaml", __FILE__)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,39 @@
1
+ require 'json'
2
+ require 'selenium-webdriver'
3
+ require 'webdriver-user-agent/browser_options'
4
+ require 'webdriver-user-agent/devices'
5
+
6
+ module Webdriver
7
+ module UserAgent
8
+ class Driver
9
+ include Singleton
10
+ include Devices
11
+
12
+ def for(opts)
13
+ user_agent_string = agent_string_for opts[:agent]
14
+ options = BrowserOptions.new(opts, user_agent_string)
15
+ build_driver_using options
16
+ end
17
+
18
+ private
19
+
20
+ def resize_inner_window(driver, width, height)
21
+ if driver.browser == :firefox or :chrome
22
+ driver.execute_script("window.open(#{driver.current_url.to_json},'_blank');")
23
+ driver.close
24
+ driver.switch_to.window driver.window_handles.first
25
+ end
26
+ driver.execute_script("window.innerWidth = #{width}; window.innerHeight = #{height};")
27
+ end
28
+
29
+ def build_driver_using(options)
30
+ driver = Selenium::WebDriver.for options.browser, options.browser_options
31
+ unless options.agent == :random
32
+ resize_inner_window(driver, *resolution_for(options.agent, options.orientation))
33
+ end
34
+ driver
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -1,8 +1,8 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  Gem::Specification.new do |gem|
4
- gem.authors = ["Alister Scott"]
5
- gem.email = ["alister.scott@gmail.com"]
4
+ gem.authors = ["Alister Scott", "Jeff Morgan"]
5
+ gem.email = ["alister.scott@gmail.com", "jeff.morgan@leandog.com"]
6
6
  gem.description = %q{A helper gem to emulate populate device user agents and resolutions when using webdriver}
7
7
  gem.summary = %q{A helper gem to emulate populate device user agents and resolutions when using webdriver}
8
8
  gem.homepage = "https://github.com/alisterscott/webdriver-user-agent"
@@ -12,11 +12,11 @@ Gem::Specification.new do |gem|
12
12
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
13
  gem.name = "webdriver-user-agent"
14
14
  gem.require_paths = ["lib"]
15
- gem.version = "6.6.6"
15
+ gem.version = "7.0"
16
16
  gem.add_dependency 'selenium-webdriver'
17
17
  gem.add_dependency 'facets'
18
18
  gem.add_dependency 'json'
19
19
  gem.add_development_dependency 'rspec'
20
20
  gem.add_development_dependency 'watir-webdriver'
21
- gem.post_install_message = "THIS GEM HAS BEEN DEPRECATED AND NO LONGER MAINTAINED"
22
- end
21
+
22
+ end
metadata CHANGED
@@ -1,18 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdriver-user-agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.6.6
4
+ version: '7.0'
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Alister Scott
9
+ - Jeff Morgan
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2013-03-15 00:00:00.000000000 Z
13
+ date: 2013-06-08 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: selenium-webdriver
15
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
16
19
  requirements:
17
20
  - - ! '>='
18
21
  - !ruby/object:Gem::Version
@@ -20,6 +23,7 @@ dependencies:
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
23
27
  requirements:
24
28
  - - ! '>='
25
29
  - !ruby/object:Gem::Version
@@ -27,6 +31,7 @@ dependencies:
27
31
  - !ruby/object:Gem::Dependency
28
32
  name: facets
29
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
30
35
  requirements:
31
36
  - - ! '>='
32
37
  - !ruby/object:Gem::Version
@@ -34,6 +39,7 @@ dependencies:
34
39
  type: :runtime
35
40
  prerelease: false
36
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
37
43
  requirements:
38
44
  - - ! '>='
39
45
  - !ruby/object:Gem::Version
@@ -41,6 +47,7 @@ dependencies:
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: json
43
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
44
51
  requirements:
45
52
  - - ! '>='
46
53
  - !ruby/object:Gem::Version
@@ -48,6 +55,7 @@ dependencies:
48
55
  type: :runtime
49
56
  prerelease: false
50
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
51
59
  requirements:
52
60
  - - ! '>='
53
61
  - !ruby/object:Gem::Version
@@ -55,6 +63,7 @@ dependencies:
55
63
  - !ruby/object:Gem::Dependency
56
64
  name: rspec
57
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
58
67
  requirements:
59
68
  - - ! '>='
60
69
  - !ruby/object:Gem::Version
@@ -62,6 +71,7 @@ dependencies:
62
71
  type: :development
63
72
  prerelease: false
64
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
65
75
  requirements:
66
76
  - - ! '>='
67
77
  - !ruby/object:Gem::Version
@@ -69,6 +79,7 @@ dependencies:
69
79
  - !ruby/object:Gem::Dependency
70
80
  name: watir-webdriver
71
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
72
83
  requirements:
73
84
  - - ! '>='
74
85
  - !ruby/object:Gem::Version
@@ -76,6 +87,7 @@ dependencies:
76
87
  type: :development
77
88
  prerelease: false
78
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
79
91
  requirements:
80
92
  - - ! '>='
81
93
  - !ruby/object:Gem::Version
@@ -84,12 +96,15 @@ description: A helper gem to emulate populate device user agents and resolutions
84
96
  using webdriver
85
97
  email:
86
98
  - alister.scott@gmail.com
99
+ - jeff.morgan@leandog.com
87
100
  executables: []
88
101
  extensions: []
89
102
  extra_rdoc_files: []
90
103
  files:
91
104
  - .gitignore
92
- - .rvmrc
105
+ - .rspec
106
+ - .ruby-gemset
107
+ - .ruby-version
93
108
  - Gemfile
94
109
  - HISTORY.md
95
110
  - LICENSE
@@ -98,30 +113,35 @@ files:
98
113
  - lib/device-info/devices.yaml
99
114
  - lib/device-info/user_agents.txt
100
115
  - lib/webdriver-user-agent.rb
116
+ - lib/webdriver-user-agent/browser_options.rb
117
+ - lib/webdriver-user-agent/core_ext/symbol.rb
118
+ - lib/webdriver-user-agent/devices.rb
119
+ - lib/webdriver-user-agent/driver.rb
101
120
  - spec/webdriver-user-agent_spec.rb
102
121
  - webdriver-user-agent.gemspec
103
122
  homepage: https://github.com/alisterscott/webdriver-user-agent
104
123
  licenses: []
105
- metadata: {}
106
- post_install_message: THIS GEM HAS BEEN DEPRECATED AND NO LONGER MAINTAINED
124
+ post_install_message:
107
125
  rdoc_options: []
108
126
  require_paths:
109
127
  - lib
110
128
  required_ruby_version: !ruby/object:Gem::Requirement
129
+ none: false
111
130
  requirements:
112
131
  - - ! '>='
113
132
  - !ruby/object:Gem::Version
114
133
  version: '0'
115
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
+ none: false
116
136
  requirements:
117
137
  - - ! '>='
118
138
  - !ruby/object:Gem::Version
119
139
  version: '0'
120
140
  requirements: []
121
141
  rubyforge_project:
122
- rubygems_version: 2.0.3
142
+ rubygems_version: 1.8.25
123
143
  signing_key:
124
- specification_version: 4
144
+ specification_version: 3
125
145
  summary: A helper gem to emulate populate device user agents and resolutions when
126
146
  using webdriver
127
147
  test_files:
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZjYxMTkxODdmYjlmOTkyZTViMWUwNTM2OTljNGVlZmY0OGE4ODM1YQ==
5
- data.tar.gz: !binary |-
6
- ZjMzY2ZmMzg0YjU4ZGVjN2I3NjVlYWQ5NzE2YzYxZTIzYjA4NmFkZg==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MDk3OTAzOTlmNWYwNWI4ZDU3MWVmYzEzZmI0YjVlNDQzNmE1MjBhZGI1MjEz
10
- Y2RiYmNlZjlhZWNhNmIxMGQ4MDU0MmQxZjQwZWUxYTRjZmYzYzQyYjkxYzIx
11
- MTIxZTAyOGY3OWY5MjA0OWQ2NTUxYzEwZGY0OTI5OGY4MWU3MDM=
12
- data.tar.gz: !binary |-
13
- NTZiYjQ2NzdjZmRkOTlkODVlNjEyYjg1NmJkNzNkYzE5MGNjYTg5ZDNjYWEz
14
- OTkwNWRiZWYyOTYyODZiYjg4NmIwYTc5ZDExYWUxZmQ4NWNmMGMyNmJlMDFi
15
- MWVkZmNkNjk3YjI3ZTAzYmJhYTY2MGQ1YzM3NmMwNDA1NjZlZDc=
data/.rvmrc DELETED
@@ -1,2 +0,0 @@
1
- rvm_install_on_use_flag=1
2
- rvm --create use ruby-1.9.3@webdriver-user-agent