webdriver-user-agent 6.6.6 → 7.0

Sign up to get free protection for your applications and to get access to all the features.
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