webdriver-user-agent 0.1.0 → 0.2.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.
@@ -10,8 +10,7 @@ module UserAgent
10
10
  options[:orientation] ||= :portrait
11
11
 
12
12
  user_agent_string = agent_string_for options[:agent]
13
- device_resolution = resolution_for options[:agent], options[:orientation]
14
-
13
+
15
14
  case options[:browser]
16
15
  when :firefox
17
16
  options[:profile] ||= Selenium::WebDriver::Firefox::Profile.new
@@ -23,7 +22,7 @@ module UserAgent
23
22
  raise "WebDriver UserAgent currently only supports :firefox and :chrome."
24
23
  end
25
24
  driver = Selenium::WebDriver.for options[:browser], options.except(:browser, :agent, :orientation)
26
- resize_inner_window driver, *device_resolution
25
+ resize_inner_window(driver, *resolution_for(options[:agent], options[:orientation])) unless (downcase_sym(options[:agent]) == :random)
27
26
  driver
28
27
  end
29
28
 
@@ -37,7 +36,7 @@ module UserAgent
37
36
  end
38
37
 
39
38
  def self.agent_string_for device
40
- user_agent_string = devices[downcase_sym device][:user_agent]
39
+ user_agent_string = downcase_sym(device) == :random ? random_user_agent : devices[downcase_sym device][:user_agent]
41
40
  raise "Unsupported user agent: '#{options[:agent]}'." unless user_agent_string
42
41
  user_agent_string
43
42
  end
@@ -56,4 +55,10 @@ module UserAgent
56
55
  def self.downcase_sym sym
57
56
  sym.to_s.downcase.to_sym #to support ruby 1.8.x
58
57
  end
58
+
59
+ def self.random_user_agent
60
+ File.foreach(File.expand_path("../device-info/user_agents.txt", __FILE__)).each_with_index.reduce(nil) { |picked,pair|
61
+ rand < 1.0/(1+pair[1]) ? pair[0] : picked }
62
+ end
63
+
59
64
  end
@@ -43,6 +43,22 @@ describe "webdriver user agent" do
43
43
  @driver.execute_script('return window.innerHeight').should == 946
44
44
  end
45
45
 
46
+ it "can create a new webdriver driver using firefox and random user agent" do
47
+ @driver = UserAgent.driver(:agent => :random)
48
+ @driver.browser.should == :firefox
49
+ @driver.execute_script('return navigator.userAgent').should_not be_nil
50
+ @driver.execute_script('return window.innerWidth').should_not == 320
51
+ @driver.execute_script('return window.innerHeight').should_not == 356
52
+ end
53
+
54
+ it "can create a new webdriver driver using chrome and random user agent" do
55
+ @driver = UserAgent.driver(:browser => :chrome, :agent => :random)
56
+ @driver.browser.should == :chrome
57
+ @driver.execute_script('return navigator.userAgent').should_not be_nil
58
+ @driver.execute_script('return window.innerWidth').should_not == 320
59
+ @driver.execute_script('return window.innerHeight').should_not == 356
60
+ end
61
+
46
62
  it "can create a new webdriver driver using an existing firefox profile" do
47
63
  profile = Selenium::WebDriver::Firefox::Profile.new
48
64
  profile['browser.startup.homepage'] = "data:text/html,<title>hello</title>"
@@ -59,4 +75,8 @@ describe "webdriver user agent" do
59
75
  @browser = Watir::Browser.new @driver
60
76
  @browser.url.should == "about:blank"
61
77
  end
78
+
79
+
80
+
81
+
62
82
  end
@@ -12,7 +12,7 @@ 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 = "0.1.0"
15
+ gem.version = "0.2.0"
16
16
  gem.add_dependency 'selenium-webdriver'
17
17
  gem.add_dependency 'facets'
18
18
  gem.add_dependency 'json'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdriver-user-agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-13 00:00:00.000000000 Z
12
+ date: 2012-09-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: selenium-webdriver
@@ -107,6 +107,7 @@ files:
107
107
  - README.md
108
108
  - Rakefile
109
109
  - lib/device-info/devices.yaml
110
+ - lib/device-info/user_agents.txt
110
111
  - lib/webdriver-user-agent.rb
111
112
  - spec/webdriver-user-agent_spec.rb
112
113
  - webdriver-user-agent.gemspec