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.
- data/HISTORY.md +4 -0
- data/README.md +9 -0
- data/lib/device-info/user_agents.txt +9057 -0
- data/lib/webdriver-user-agent.rb +9 -4
- data/spec/webdriver-user-agent_spec.rb +20 -0
- data/webdriver-user-agent.gemspec +1 -1
- metadata +3 -2
data/lib/webdriver-user-agent.rb
CHANGED
@@ -10,8 +10,7 @@ module UserAgent
|
|
10
10
|
options[:orientation] ||= :portrait
|
11
11
|
|
12
12
|
user_agent_string = agent_string_for options[:agent]
|
13
|
-
|
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
|
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.
|
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.
|
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-
|
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
|