webdriver-user-agent 7.2 → 7.3
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.
- checksums.yaml +7 -0
- data/.ruby-version +1 -1
- data/ChangeLog +7 -0
- data/lib/webdriver-user-agent/browser_options.rb +10 -1
- data/lib/webdriver-user-agent/devices.rb +3 -1
- data/lib/webdriver-user-agent/driver.rb +3 -2
- data/spec/webdriver-user-agent_spec.rb +53 -22
- data/webdriver-user-agent.gemspec +2 -2
- metadata +35 -33
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ef6b7eca083c27f5dc45d9e81854697a175c706a
|
4
|
+
data.tar.gz: 5f29a865c65c990681a69e5902dcdbfa99bf42e9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 88a77a7c2c8c2f5c67d3d9ba1418c0b6a8d65568e77482f59841f57d574392c47d70ee38224b40f04749c916834e1a0c16ed629ac9d6b840b54c1867d5aff527
|
7
|
+
data.tar.gz: 2f0e6a6de214e03ad8e6866e88ae40c4136adf9302e3d574e054e52afd432fb280f5cb02a544fed2989b6f443e3497057777173b07a27b55d00a89552955b879
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-
|
1
|
+
ruby-2.2.1
|
data/ChangeLog
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
=== Version 7.3 / 2015-7-14 (Thanks samnissen)
|
2
|
+
* Enhancements
|
3
|
+
* Allow users to override the browser screensize
|
4
|
+
* Fixes
|
5
|
+
* Removed development puts commands
|
6
|
+
* Chrome no longer rejects using Javascript to rewize the window
|
7
|
+
|
1
8
|
=== Version 7.2 / 2014-12-12
|
2
9
|
* Enhancements
|
3
10
|
* Added iphone 5 and 6 variants (Thanks samnissen)
|
@@ -9,6 +9,9 @@ module Webdriver
|
|
9
9
|
options[:browser] ||= :firefox
|
10
10
|
options[:agent] ||= :iphone
|
11
11
|
options[:orientation] ||= :portrait
|
12
|
+
|
13
|
+
options[:viewport_width], options[:viewport_height] = parse_viewport_sizes(options[:viewport_width], options[:viewport_height])
|
14
|
+
|
12
15
|
initialize_for_browser(user_agent_string)
|
13
16
|
end
|
14
17
|
|
@@ -20,7 +23,7 @@ module Webdriver
|
|
20
23
|
end
|
21
24
|
|
22
25
|
def browser_options
|
23
|
-
options.except(:browser, :agent, :orientation, :user_agent_string)
|
26
|
+
options.except(:browser, :agent, :orientation, :user_agent_string, :viewport_width, :viewport_height)
|
24
27
|
end
|
25
28
|
|
26
29
|
private
|
@@ -42,6 +45,12 @@ module Webdriver
|
|
42
45
|
end
|
43
46
|
|
44
47
|
end
|
48
|
+
|
49
|
+
def parse_viewport_sizes(width, height)
|
50
|
+
return ["0","0"] unless "#{width}".to_i > 0 && "#{height}".to_i > 0
|
51
|
+
|
52
|
+
["#{width}", "#{height}"]
|
53
|
+
end
|
45
54
|
end
|
46
55
|
end
|
47
56
|
end
|
@@ -8,7 +8,9 @@ module Webdriver
|
|
8
8
|
YAML.load_file devices_file
|
9
9
|
end
|
10
10
|
|
11
|
-
def resolution_for(device_name, orientation)
|
11
|
+
def resolution_for(device_name, orientation, user_width, user_height)
|
12
|
+
return [user_width.to_i, user_height.to_i] if ((user_width.to_i + user_height.to_i) > 1)
|
13
|
+
|
12
14
|
device = devices[device_name.downcase][orientation.downcase]
|
13
15
|
[device[:width],device[:height]]
|
14
16
|
end
|
@@ -24,13 +24,14 @@ module Webdriver
|
|
24
24
|
driver.close
|
25
25
|
driver.switch_to.window driver.window_handles.first
|
26
26
|
end
|
27
|
-
|
27
|
+
target_size = Selenium::WebDriver::Dimension.new(width.to_i, height.to_i)
|
28
|
+
driver.manage.window.size = target_size
|
28
29
|
end
|
29
30
|
|
30
31
|
def build_driver_using(options)
|
31
32
|
driver = Selenium::WebDriver.for options.browser, options.browser_options
|
32
33
|
unless options.agent == :random
|
33
|
-
resize_inner_window(driver, *resolution_for(options.agent, options.orientation))
|
34
|
+
resize_inner_window(driver, *resolution_for(options.agent, options.orientation, options.viewport_width, options.viewport_height))
|
34
35
|
end
|
35
36
|
driver
|
36
37
|
end
|
@@ -6,65 +6,78 @@ require 'webdriver-user-agent'
|
|
6
6
|
require 'selenium-webdriver'
|
7
7
|
require 'watir-webdriver'
|
8
8
|
|
9
|
+
CHROMEBROWSER_UICHROME_HEIGHT = 72
|
10
|
+
CHROMEBROWSER_UI_MINIMUM_HEIGHT = 200
|
11
|
+
FIREFOXBROWSER_UICHROME_HEIGHT = 79
|
12
|
+
|
9
13
|
describe "webdriver user agent" do
|
10
14
|
after :each do
|
11
15
|
@driver.quit if @driver
|
12
16
|
end
|
17
|
+
|
18
|
+
# window.innerWidth and window.innerHeight
|
19
|
+
# do not accurately provide
|
20
|
+
# browser widths and heights
|
21
|
+
# http://stackoverflow.com/a/8876069/1651458
|
13
22
|
|
14
23
|
it "can create a new webdriver driver using firefox and iphone (portrait) by default" do
|
15
24
|
@driver = Webdriver::UserAgent.driver
|
16
25
|
expect(@driver.browser).to eq(:firefox)
|
17
26
|
expect(@driver.execute_script('return navigator.userAgent')).to include 'iPhone'
|
18
|
-
expect(@driver.execute_script('return window.innerWidth')).to eq(375)
|
19
|
-
expect(@driver.execute_script('return window.innerHeight')).to eq(559)
|
27
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).to eq(375)
|
28
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).to eq(559 - FIREFOXBROWSER_UICHROME_HEIGHT)
|
20
29
|
end
|
21
30
|
|
22
31
|
it "can create a new webdriver driver using chrome and iphone 6 plus (landscape)" do
|
23
32
|
@driver = Webdriver::UserAgent.driver(:browser => :chrome, :agent => :iphone6plus, :orientation => :landscape)
|
24
33
|
expect(@driver.browser).to eq(:chrome)
|
25
34
|
expect(@driver.execute_script('return navigator.userAgent')).to include 'iPhone'
|
26
|
-
expect(@driver.execute_script('return window.innerWidth')).to eq(736)
|
27
|
-
expect(@driver.execute_script('return window.innerHeight')).to eq(414)
|
35
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).to eq(736)
|
36
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).to eq(414 - CHROMEBROWSER_UICHROME_HEIGHT)
|
28
37
|
end
|
29
38
|
|
30
39
|
it "can create a new webdriver driver using chrome and iPad (landscape)" do
|
31
40
|
@driver = Webdriver::UserAgent.driver(:browser => :chrome, :agent => :iPad, :orientation => :landscape)
|
32
41
|
expect(@driver.browser).to eq(:chrome)
|
33
42
|
expect(@driver.execute_script('return navigator.userAgent')).to include 'iPad'
|
34
|
-
expect(@driver.execute_script('return window.innerWidth')).to eq(1024)
|
35
|
-
expect(@driver.execute_script('return window.innerHeight')).to eq(704)
|
43
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).to eq(1024)
|
44
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).to eq(704 - CHROMEBROWSER_UICHROME_HEIGHT)
|
36
45
|
end
|
37
46
|
|
38
47
|
it "can create a new webdriver driver using firefox and android phone (landscape)" do
|
39
48
|
@driver = Webdriver::UserAgent.driver(:browser => :chrome, :agent => :android_phone, :orientation => :landscape)
|
40
49
|
expect(@driver.browser).to eq(:chrome)
|
41
50
|
expect(@driver.execute_script('return navigator.userAgent')).to include 'Android'
|
42
|
-
expect(@driver.execute_script('return window.innerWidth')).to eq(480)
|
43
|
-
|
51
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).to eq(480)
|
52
|
+
|
53
|
+
# Chrome is apparently setting some kind of minimum height
|
54
|
+
# As seen on Chrome v42 on OS X Yosimite
|
55
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).to eq(CHROMEBROWSER_UI_MINIMUM_HEIGHT)
|
56
|
+
|
44
57
|
end
|
45
58
|
|
46
|
-
it "can create a new webdriver driver using
|
59
|
+
it "can create a new webdriver driver using chrome and android tablet (portrait)" do
|
47
60
|
@driver = Webdriver::UserAgent.driver(:browser => :chrome, :agent => :android_tablet, :orientation => :portrait)
|
48
61
|
expect(@driver.browser).to eq(:chrome)
|
49
62
|
expect(@driver.execute_script('return navigator.userAgent')).to include 'Android'
|
50
|
-
expect(@driver.execute_script('return window.innerWidth')).to eq(768)
|
51
|
-
expect(@driver.execute_script('return window.innerHeight')).to eq(
|
63
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).to eq(768)
|
64
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).to eq(873 - CHROMEBROWSER_UICHROME_HEIGHT)
|
52
65
|
end
|
53
66
|
|
54
67
|
it "can create a new webdriver driver using firefox and random user agent" do
|
55
68
|
@driver = Webdriver::UserAgent.driver(:agent => :random)
|
56
69
|
expect(@driver.browser).to eq(:firefox)
|
57
70
|
expect(@driver.execute_script('return navigator.userAgent')).not_to be_nil
|
58
|
-
expect(@driver.execute_script('return window.innerWidth')).not_to eq(320)
|
59
|
-
expect(@driver.execute_script('return window.innerHeight')).not_to eq(356)
|
71
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).not_to eq(320)
|
72
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).not_to eq(356 - FIREFOXBROWSER_UICHROME_HEIGHT)
|
60
73
|
end
|
61
74
|
|
62
75
|
it "can create a new webdriver driver using chrome and random user agent" do
|
63
76
|
@driver = Webdriver::UserAgent.driver(:browser => :chrome, :agent => :random)
|
64
77
|
expect(@driver.browser).to eq(:chrome)
|
65
78
|
expect(@driver.execute_script('return navigator.userAgent')).not_to be_nil
|
66
|
-
expect(@driver.execute_script('return window.innerWidth')).not_to eq(320)
|
67
|
-
expect(@driver.execute_script('return window.innerHeight')).not_to eq(356)
|
79
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).not_to eq(320)
|
80
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).not_to eq(356 - CHROMEBROWSER_UICHROME_HEIGHT)
|
68
81
|
end
|
69
82
|
|
70
83
|
it "can create a new webdriver driver using an existing firefox profile" do
|
@@ -73,19 +86,40 @@ describe "webdriver user agent" do
|
|
73
86
|
@driver = Webdriver::UserAgent.driver(:browser => :firefox, :profile => profile)
|
74
87
|
expect(@driver.browser).to eq(:firefox)
|
75
88
|
expect(@driver.execute_script('return navigator.userAgent')).to include 'iPhone'
|
76
|
-
expect(@driver.execute_script('return window.innerWidth')).to eq(375)
|
77
|
-
expect(@driver.execute_script('return window.innerHeight')).to eq(559)
|
89
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).to eq(375)
|
90
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).to eq(559 - FIREFOXBROWSER_UICHROME_HEIGHT)
|
78
91
|
expect(@driver.title).to eq('hello')
|
79
92
|
end
|
80
93
|
|
81
94
|
it "can create a new webdriver driver using firefox and user-specified user agent" do
|
82
95
|
@driver = Webdriver::UserAgent.driver(:user_agent_string => "Mozilla/4.0 (compatible; MSIE 5.5b1; Mac_PowerPC)")
|
83
96
|
expect(@driver.browser).to eq(:firefox)
|
84
|
-
expect(@driver.execute_script('return navigator.userAgent')).
|
97
|
+
expect(@driver.execute_script('return navigator.userAgent')).to include 'Mac_PowerPC'
|
85
98
|
|
86
99
|
@browser = Watir::Browser.new @driver
|
87
100
|
expect(@browser.url).to eq("about:blank")
|
88
101
|
end
|
102
|
+
|
103
|
+
it "can create a new webdriver driver using firefox and user-specified viewport sizes (string or int)" do
|
104
|
+
width = 800
|
105
|
+
height = 600
|
106
|
+
|
107
|
+
@driver = Webdriver::UserAgent.driver(:viewport_width => "#{width}", :viewport_height => height, :agent => :iphone6)
|
108
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).to eq(800)
|
109
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).to eq(600 - FIREFOXBROWSER_UICHROME_HEIGHT)
|
110
|
+
|
111
|
+
@browser = Watir::Browser.new @driver
|
112
|
+
expect(@browser.url).to eq("about:blank")
|
113
|
+
end
|
114
|
+
|
115
|
+
it "can create a new webdriver driver, handling for nonsense height and widths" do
|
116
|
+
@driver = Webdriver::UserAgent.driver(:viewport_width => "abc", :agent => :iphone6)
|
117
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientWidth, window.innerWidth || 0)')).to eq(375)
|
118
|
+
expect(@driver.execute_script('return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)')).to eq(559 - FIREFOXBROWSER_UICHROME_HEIGHT)
|
119
|
+
|
120
|
+
@browser = Watir::Browser.new @driver
|
121
|
+
expect(@browser.url).to eq("about:blank")
|
122
|
+
end
|
89
123
|
|
90
124
|
it "can allow using selenium driver for watir browser" do
|
91
125
|
@driver = Webdriver::UserAgent.driver(:browser => :firefox, :agent => :iphone, :orientation => :portrait)
|
@@ -93,7 +127,4 @@ describe "webdriver user agent" do
|
|
93
127
|
expect(@browser.url).to eq("about:blank")
|
94
128
|
end
|
95
129
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
end
|
130
|
+
end
|
@@ -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 = "7.
|
15
|
+
gem.version = "7.3"
|
16
16
|
gem.add_dependency 'selenium-webdriver'
|
17
17
|
gem.add_dependency 'facets'
|
18
18
|
gem.add_dependency 'json'
|
19
|
+
gem.add_dependency 'psych'
|
19
20
|
gem.add_development_dependency 'rspec'
|
20
21
|
gem.add_development_dependency 'watir-webdriver'
|
21
|
-
|
22
22
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webdriver-user-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '7.
|
5
|
-
prerelease:
|
4
|
+
version: '7.3'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Alister Scott
|
@@ -10,86 +9,90 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2015-07-14 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: selenium-webdriver
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - ">="
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '0'
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - ">="
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: '0'
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: facets
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- -
|
32
|
+
- - ">="
|
37
33
|
- !ruby/object:Gem::Version
|
38
34
|
version: '0'
|
39
35
|
type: :runtime
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- -
|
39
|
+
- - ">="
|
45
40
|
- !ruby/object:Gem::Version
|
46
41
|
version: '0'
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: json
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
|
-
- -
|
46
|
+
- - ">="
|
53
47
|
- !ruby/object:Gem::Version
|
54
48
|
version: '0'
|
55
49
|
type: :runtime
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
|
-
- -
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: psych
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
61
68
|
- !ruby/object:Gem::Version
|
62
69
|
version: '0'
|
63
70
|
- !ruby/object:Gem::Dependency
|
64
71
|
name: rspec
|
65
72
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
73
|
requirements:
|
68
|
-
- -
|
74
|
+
- - ">="
|
69
75
|
- !ruby/object:Gem::Version
|
70
76
|
version: '0'
|
71
77
|
type: :development
|
72
78
|
prerelease: false
|
73
79
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
80
|
requirements:
|
76
|
-
- -
|
81
|
+
- - ">="
|
77
82
|
- !ruby/object:Gem::Version
|
78
83
|
version: '0'
|
79
84
|
- !ruby/object:Gem::Dependency
|
80
85
|
name: watir-webdriver
|
81
86
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
87
|
requirements:
|
84
|
-
- -
|
88
|
+
- - ">="
|
85
89
|
- !ruby/object:Gem::Version
|
86
90
|
version: '0'
|
87
91
|
type: :development
|
88
92
|
prerelease: false
|
89
93
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
94
|
requirements:
|
92
|
-
- -
|
95
|
+
- - ">="
|
93
96
|
- !ruby/object:Gem::Version
|
94
97
|
version: '0'
|
95
98
|
description: A helper gem to emulate populate device user agents and resolutions when
|
@@ -101,10 +104,10 @@ executables: []
|
|
101
104
|
extensions: []
|
102
105
|
extra_rdoc_files: []
|
103
106
|
files:
|
104
|
-
- .gitignore
|
105
|
-
- .rspec
|
106
|
-
- .ruby-gemset
|
107
|
-
- .ruby-version
|
107
|
+
- ".gitignore"
|
108
|
+
- ".rspec"
|
109
|
+
- ".ruby-gemset"
|
110
|
+
- ".ruby-version"
|
108
111
|
- ChangeLog
|
109
112
|
- Gemfile
|
110
113
|
- HISTORY.md
|
@@ -122,27 +125,26 @@ files:
|
|
122
125
|
- webdriver-user-agent.gemspec
|
123
126
|
homepage: https://github.com/alisterscott/webdriver-user-agent
|
124
127
|
licenses: []
|
128
|
+
metadata: {}
|
125
129
|
post_install_message:
|
126
130
|
rdoc_options: []
|
127
131
|
require_paths:
|
128
132
|
- lib
|
129
133
|
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
134
|
requirements:
|
132
|
-
- -
|
135
|
+
- - ">="
|
133
136
|
- !ruby/object:Gem::Version
|
134
137
|
version: '0'
|
135
138
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
-
none: false
|
137
139
|
requirements:
|
138
|
-
- -
|
140
|
+
- - ">="
|
139
141
|
- !ruby/object:Gem::Version
|
140
142
|
version: '0'
|
141
143
|
requirements: []
|
142
144
|
rubyforge_project:
|
143
|
-
rubygems_version:
|
145
|
+
rubygems_version: 2.4.6
|
144
146
|
signing_key:
|
145
|
-
specification_version:
|
147
|
+
specification_version: 4
|
146
148
|
summary: A helper gem to emulate populate device user agents and resolutions when
|
147
149
|
using webdriver
|
148
150
|
test_files:
|