webdriver-user-agent 0.1.0 → 0.2.0

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