webdrivers 2.3.2 → 4.7.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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +204 -56
- data/LICENSE.txt +2 -2
- data/README.md +253 -17
- data/lib/webdrivers/Rakefile +6 -0
- data/lib/webdrivers/chrome_finder.rb +127 -0
- data/lib/webdrivers/chromedriver.rb +131 -23
- data/lib/webdrivers/common.rb +145 -70
- data/lib/webdrivers/edge_finder.rb +99 -0
- data/lib/webdrivers/edgedriver.rb +87 -17
- data/lib/webdrivers/geckodriver.rb +46 -25
- data/lib/webdrivers/iedriver.rb +51 -18
- data/lib/webdrivers/logger.rb +111 -0
- data/lib/webdrivers/network.rb +63 -0
- data/lib/webdrivers/railtie.rb +15 -0
- data/lib/webdrivers/system.rb +197 -0
- data/lib/webdrivers/tasks/chromedriver.rake +44 -0
- data/lib/webdrivers/tasks/edgedriver.rake +44 -0
- data/lib/webdrivers/tasks/geckodriver.rake +44 -0
- data/lib/webdrivers/tasks/iedriver.rake +44 -0
- data/lib/webdrivers/version.rb +5 -0
- data/lib/webdrivers.rb +7 -9
- data/spec/spec_helper.rb +18 -2
- data/spec/webdrivers/chrome_finder_spec.rb +103 -0
- data/spec/webdrivers/chromedriver_spec.rb +276 -0
- data/spec/webdrivers/edge_finder_spec.rb +58 -0
- data/spec/webdrivers/edgedriver_spec.rb +279 -0
- data/spec/webdrivers/geckodriver_spec.rb +211 -0
- data/spec/webdrivers/i_edriver_spec.rb +197 -0
- data/spec/webdrivers/system_spec.rb +79 -0
- data/spec/webdrivers/webdrivers_spec.rb +80 -0
- data/spec/webdrivers_proxy_support_spec.rb +53 -0
- metadata +157 -43
- data/.gitignore +0 -6
- data/.travis.yml +0 -3
- data/Gemfile +0 -4
- data/Rakefile +0 -6
- data/bin/IEDriverServer +0 -5
- data/bin/MicrosoftWebDriver +0 -5
- data/bin/chromedriver +0 -5
- data/bin/geckodriver +0 -5
- data/bin/phantomjs +0 -5
- data/lib/webdrivers/phantomjs.rb +0 -40
- data/spec/chromedriver_spec.rb +0 -36
- data/spec/edgedriver_spec.rb +0 -24
- data/spec/geckodriver_spec.rb +0 -36
- data/spec/iedriver_spec.rb +0 -27
- data/spec/phantomjs_spec.rb +0 -36
- data/webdrivers.gemspec +0 -24
@@ -0,0 +1,79 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Webdrivers::System do
|
6
|
+
describe '#wsl_v1?' do
|
7
|
+
subject { described_class.wsl_v1? }
|
8
|
+
|
9
|
+
before do
|
10
|
+
allow(described_class).to receive(:platform).and_return(platform)
|
11
|
+
allow(File).to receive(:open).with('/proc/version').and_return(StringIO.new(wsl_proc_version_contents))
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:platform) { 'linux' }
|
15
|
+
let(:wsl_proc_version_contents) { '' }
|
16
|
+
|
17
|
+
context 'when the current platform is linux and WSL version is 1' do
|
18
|
+
let(:wsl_proc_version_contents) do
|
19
|
+
'Linux version 4.4.0-18362-Microsoft'\
|
20
|
+
'(Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) )'\
|
21
|
+
'#836-Microsoft Mon May 05 16:04:00 PST 2020'
|
22
|
+
end
|
23
|
+
|
24
|
+
it { is_expected.to eq true }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when the current platform is linux and WSL version is 2' do
|
28
|
+
let(:wsl_proc_version_contents) do
|
29
|
+
'Linux version 4.19.84-microsoft-standard '\
|
30
|
+
'(oe-user@oe-host) (gcc version 8.2.0 (GCC)) '\
|
31
|
+
'#1 SMP Wed Nov 13 11:44:37 UTC 2019'
|
32
|
+
end
|
33
|
+
|
34
|
+
it { is_expected.to eq false }
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when the current platform is mac' do
|
38
|
+
let(:platform) { 'mac' }
|
39
|
+
|
40
|
+
it { is_expected.to eq false }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#to_win32_path' do
|
45
|
+
before { allow(described_class).to receive(:call).and_return("C:\\path\\to\\folder\n") }
|
46
|
+
|
47
|
+
it 'uses wslpath' do
|
48
|
+
described_class.to_win32_path '/c/path/to/folder'
|
49
|
+
|
50
|
+
expect(described_class).to have_received(:call).with('wslpath -w \'/c/path/to/folder\'')
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'removes the trailing newline' do
|
54
|
+
expect(described_class.to_win32_path('/c/path/to/folder')).not_to end_with('\n')
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when the path is already in Windows format' do
|
58
|
+
it 'returns early' do
|
59
|
+
expect(described_class.to_win32_path('D:\\')).to eq 'D:\\'
|
60
|
+
|
61
|
+
expect(described_class).not_to have_received(:call)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#to_wsl_path' do
|
67
|
+
before { allow(described_class).to receive(:call).and_return("/c/path/to/folder\n") }
|
68
|
+
|
69
|
+
it 'uses wslpath' do
|
70
|
+
described_class.to_wsl_path 'C:\\path\\to\\folder'
|
71
|
+
|
72
|
+
expect(described_class).to have_received(:call).with('wslpath -u \'C:\\path\\to\\folder\'')
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'removes the trailing newline' do
|
76
|
+
expect(described_class.to_wsl_path('/c/path/to/folder')).not_to end_with('\n')
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Webdrivers do
|
6
|
+
describe '#cache_time' do
|
7
|
+
before { Webdrivers::Chromedriver.remove }
|
8
|
+
|
9
|
+
after { described_class.cache_time = nil }
|
10
|
+
|
11
|
+
context 'when cache time is not set' do
|
12
|
+
before { described_class.cache_time = nil }
|
13
|
+
|
14
|
+
it 'defaults cache time to 86,400 Seconds (24 hours)' do
|
15
|
+
expect(described_class.cache_time).to eq(86_400)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when Webdrivers.cache_time is set' do
|
20
|
+
before { described_class.cache_time = '999' }
|
21
|
+
|
22
|
+
it 'returns user defined cache time' do
|
23
|
+
expect(described_class.cache_time).to eq(999)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'returns cache time as an Integer' do
|
27
|
+
expect(described_class.cache_time).to be_an_instance_of(Integer)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when ENV variable WD_CACHE_TIME is set' do
|
32
|
+
before { described_class.cache_time = 3600 }
|
33
|
+
|
34
|
+
it 'uses cache time value from Webdrivers.cache_time over the ENV variable value' do
|
35
|
+
allow(ENV).to receive(:[]).with('WD_CACHE_TIME').and_return(900)
|
36
|
+
expect(described_class.cache_time).to be(3600)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'returns cache time as an Integer' do
|
40
|
+
allow(ENV).to receive(:fetch).with('WD_CACHE_TIME', 3600).and_return('999')
|
41
|
+
expect(described_class.cache_time).to be_an_instance_of(Integer)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#install_dir' do
|
47
|
+
it 'uses ~/.webdrivers as default value' do
|
48
|
+
expect(described_class.install_dir).to include('.webdriver')
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'uses provided value' do
|
52
|
+
install_dir = File.expand_path(File.join(ENV['HOME'], '.webdrivers2'))
|
53
|
+
described_class.install_dir = install_dir
|
54
|
+
|
55
|
+
expect(described_class.install_dir).to eq install_dir
|
56
|
+
ensure
|
57
|
+
described_class.install_dir = nil
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'when ENV variable WD_INSTALL_DIR is set and Webdrivers.install_dir is not' do
|
61
|
+
it 'uses path from the ENV variable' do
|
62
|
+
described_class.install_dir = nil
|
63
|
+
allow(ENV).to receive(:[]).with('WD_INSTALL_DIR').and_return('custom_dir')
|
64
|
+
expect(described_class.install_dir).to be('custom_dir')
|
65
|
+
ensure
|
66
|
+
described_class.install_dir = nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when both ENV variable WD_INSTALL_DIR and Webdrivers.install_dir are set' do
|
71
|
+
it 'uses path from Webdrivers.install_dir' do
|
72
|
+
described_class.install_dir = 'my_install_dir_path'
|
73
|
+
allow(ENV).to receive(:[]).with('WD_INSTALL_DIR').and_return('my_env_path')
|
74
|
+
expect(described_class.install_dir).to be('my_install_dir_path')
|
75
|
+
ensure
|
76
|
+
described_class.install_dir = nil
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
class FakeDriver < Webdrivers::Common
|
6
|
+
def self.http_object
|
7
|
+
Webdrivers::Network.http
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Webdrivers do
|
12
|
+
let(:http_object) { FakeDriver.http_object }
|
13
|
+
|
14
|
+
before do
|
15
|
+
described_class.proxy_addr = nil
|
16
|
+
described_class.proxy_port = nil
|
17
|
+
described_class.proxy_user = nil
|
18
|
+
described_class.proxy_pass = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'allows the proxy values to be set via configuration' do
|
22
|
+
described_class.configure do |config|
|
23
|
+
config.proxy_addr = 'proxy_addr'
|
24
|
+
config.proxy_port = '8888'
|
25
|
+
config.proxy_user = 'proxy_user'
|
26
|
+
config.proxy_pass = 'proxy_pass'
|
27
|
+
end
|
28
|
+
|
29
|
+
expect(described_class.proxy_addr).to eql 'proxy_addr'
|
30
|
+
expect(described_class.proxy_port).to eql '8888'
|
31
|
+
expect(described_class.proxy_user).to eql 'proxy_user'
|
32
|
+
expect(described_class.proxy_pass).to eql 'proxy_pass'
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'uses the Proxy when the proxy_addr is set' do
|
36
|
+
described_class.configure do |config|
|
37
|
+
config.proxy_addr = 'proxy_addr'
|
38
|
+
config.proxy_port = '8080'
|
39
|
+
end
|
40
|
+
|
41
|
+
expect(http_object.instance_variable_get('@is_proxy_class')).to be true
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'does not use the Proxy when proxy is not configured' do
|
45
|
+
expect(http_object.instance_variable_get('@is_proxy_class')).to be false
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'raises an exception when net_http_ssl_fix is called.' do
|
49
|
+
err = 'Webdrivers.net_http_ssl_fix is no longer available.' \
|
50
|
+
' Please see https://github.com/titusfortner/webdrivers#ssl_connect-errors.'
|
51
|
+
expect { described_class.net_http_ssl_fix }.to raise_error(RuntimeError, err)
|
52
|
+
end
|
53
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webdrivers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Titus Fortner
|
8
|
-
|
8
|
+
- Lakshya Kapoor
|
9
|
+
- Thomas Walpole
|
10
|
+
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
date:
|
13
|
+
date: 2021-10-14 00:00:00.000000000 Z
|
12
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: ffi
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '1.0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: rake
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - "~>"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '12.0'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '12.0'
|
13
43
|
- !ruby/object:Gem::Dependency
|
14
44
|
name: rspec
|
15
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -25,19 +55,75 @@ dependencies:
|
|
25
55
|
- !ruby/object:Gem::Version
|
26
56
|
version: '3.0'
|
27
57
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
58
|
+
name: rubocop
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0.89'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0.89'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rubocop-packaging
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.5.0
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 0.5.0
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: rubocop-performance
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: rubocop-rspec
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '1.42'
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '1.42'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: simplecov
|
29
115
|
requirement: !ruby/object:Gem::Requirement
|
30
116
|
requirements:
|
31
117
|
- - "~>"
|
32
118
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
119
|
+
version: '0.16'
|
34
120
|
type: :development
|
35
121
|
prerelease: false
|
36
122
|
version_requirements: !ruby/object:Gem::Requirement
|
37
123
|
requirements:
|
38
124
|
- - "~>"
|
39
125
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
126
|
+
version: '0.16'
|
41
127
|
- !ruby/object:Gem::Dependency
|
42
128
|
name: nokogiri
|
43
129
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,63 +139,88 @@ dependencies:
|
|
53
139
|
- !ruby/object:Gem::Version
|
54
140
|
version: '1.6'
|
55
141
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
142
|
+
name: rubyzip
|
57
143
|
requirement: !ruby/object:Gem::Requirement
|
58
144
|
requirements:
|
59
145
|
- - ">="
|
60
146
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
147
|
+
version: 1.3.0
|
62
148
|
type: :runtime
|
63
149
|
prerelease: false
|
64
150
|
version_requirements: !ruby/object:Gem::Requirement
|
65
151
|
requirements:
|
66
152
|
- - ">="
|
67
153
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
154
|
+
version: 1.3.0
|
155
|
+
- !ruby/object:Gem::Dependency
|
156
|
+
name: selenium-webdriver
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - ">"
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '3.141'
|
162
|
+
- - "<"
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '5.0'
|
165
|
+
type: :runtime
|
166
|
+
prerelease: false
|
167
|
+
version_requirements: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - ">"
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '3.141'
|
172
|
+
- - "<"
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '5.0'
|
69
175
|
description: Run Selenium tests more easily with install and updates for all supported
|
70
176
|
webdrivers.
|
71
177
|
email:
|
72
178
|
- titusfortner@gmail.com
|
73
|
-
|
74
|
-
|
75
|
-
- MicrosoftWebDriver
|
76
|
-
- chromedriver
|
77
|
-
- geckodriver
|
78
|
-
- phantomjs
|
179
|
+
- kapoorlakshya@gmail.com
|
180
|
+
executables: []
|
79
181
|
extensions: []
|
80
182
|
extra_rdoc_files: []
|
81
183
|
files:
|
82
|
-
- ".gitignore"
|
83
|
-
- ".travis.yml"
|
84
184
|
- CHANGELOG.md
|
85
|
-
- Gemfile
|
86
185
|
- LICENSE.txt
|
87
186
|
- README.md
|
88
|
-
- Rakefile
|
89
|
-
- bin/IEDriverServer
|
90
|
-
- bin/MicrosoftWebDriver
|
91
|
-
- bin/chromedriver
|
92
|
-
- bin/geckodriver
|
93
|
-
- bin/phantomjs
|
94
187
|
- lib/webdrivers.rb
|
188
|
+
- lib/webdrivers/Rakefile
|
189
|
+
- lib/webdrivers/chrome_finder.rb
|
95
190
|
- lib/webdrivers/chromedriver.rb
|
96
191
|
- lib/webdrivers/common.rb
|
192
|
+
- lib/webdrivers/edge_finder.rb
|
97
193
|
- lib/webdrivers/edgedriver.rb
|
98
194
|
- lib/webdrivers/geckodriver.rb
|
99
195
|
- lib/webdrivers/iedriver.rb
|
100
|
-
- lib/webdrivers/
|
101
|
-
-
|
102
|
-
-
|
103
|
-
-
|
104
|
-
-
|
105
|
-
-
|
196
|
+
- lib/webdrivers/logger.rb
|
197
|
+
- lib/webdrivers/network.rb
|
198
|
+
- lib/webdrivers/railtie.rb
|
199
|
+
- lib/webdrivers/system.rb
|
200
|
+
- lib/webdrivers/tasks/chromedriver.rake
|
201
|
+
- lib/webdrivers/tasks/edgedriver.rake
|
202
|
+
- lib/webdrivers/tasks/geckodriver.rake
|
203
|
+
- lib/webdrivers/tasks/iedriver.rake
|
204
|
+
- lib/webdrivers/version.rb
|
106
205
|
- spec/spec_helper.rb
|
107
|
-
- webdrivers.
|
206
|
+
- spec/webdrivers/chrome_finder_spec.rb
|
207
|
+
- spec/webdrivers/chromedriver_spec.rb
|
208
|
+
- spec/webdrivers/edge_finder_spec.rb
|
209
|
+
- spec/webdrivers/edgedriver_spec.rb
|
210
|
+
- spec/webdrivers/geckodriver_spec.rb
|
211
|
+
- spec/webdrivers/i_edriver_spec.rb
|
212
|
+
- spec/webdrivers/system_spec.rb
|
213
|
+
- spec/webdrivers/webdrivers_spec.rb
|
214
|
+
- spec/webdrivers_proxy_support_spec.rb
|
108
215
|
homepage: https://github.com/titusfortner/webdrivers
|
109
216
|
licenses:
|
110
217
|
- MIT
|
111
|
-
metadata:
|
112
|
-
|
218
|
+
metadata:
|
219
|
+
bug_tracker_uri: https://github.com/titusfortner/webdrivers/issues
|
220
|
+
changelog_uri: https://github.com/titusfortner/webdrivers/blob/master/CHANGELOG.md
|
221
|
+
documentation_uri: https://www.rubydoc.info/gems/webdrivers/4.7.0
|
222
|
+
source_code_uri: https://github.com/titusfortner/webdrivers/tree/v4.7.0
|
223
|
+
post_install_message:
|
113
224
|
rdoc_options: []
|
114
225
|
require_paths:
|
115
226
|
- lib
|
@@ -117,22 +228,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
228
|
requirements:
|
118
229
|
- - ">="
|
119
230
|
- !ruby/object:Gem::Version
|
120
|
-
version:
|
231
|
+
version: 2.6.0
|
121
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
233
|
requirements:
|
123
234
|
- - ">="
|
124
235
|
- !ruby/object:Gem::Version
|
125
236
|
version: '0'
|
126
237
|
requirements: []
|
127
|
-
|
128
|
-
|
129
|
-
signing_key:
|
238
|
+
rubygems_version: 3.2.22
|
239
|
+
signing_key:
|
130
240
|
specification_version: 4
|
131
|
-
summary: Easy
|
241
|
+
summary: Easy download and use of browser drivers.
|
132
242
|
test_files:
|
133
|
-
- spec/chromedriver_spec.rb
|
134
|
-
- spec/edgedriver_spec.rb
|
135
|
-
- spec/geckodriver_spec.rb
|
136
|
-
- spec/iedriver_spec.rb
|
137
|
-
- spec/phantomjs_spec.rb
|
138
243
|
- spec/spec_helper.rb
|
244
|
+
- spec/webdrivers/chrome_finder_spec.rb
|
245
|
+
- spec/webdrivers/chromedriver_spec.rb
|
246
|
+
- spec/webdrivers/edge_finder_spec.rb
|
247
|
+
- spec/webdrivers/edgedriver_spec.rb
|
248
|
+
- spec/webdrivers/geckodriver_spec.rb
|
249
|
+
- spec/webdrivers/i_edriver_spec.rb
|
250
|
+
- spec/webdrivers/system_spec.rb
|
251
|
+
- spec/webdrivers/webdrivers_spec.rb
|
252
|
+
- spec/webdrivers_proxy_support_spec.rb
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
data/bin/IEDriverServer
DELETED
data/bin/MicrosoftWebDriver
DELETED
data/bin/chromedriver
DELETED
data/bin/geckodriver
DELETED
data/bin/phantomjs
DELETED
data/lib/webdrivers/phantomjs.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'nokogiri'
|
2
|
-
|
3
|
-
module Webdrivers
|
4
|
-
class PhantomJS < Common
|
5
|
-
|
6
|
-
class << self
|
7
|
-
def file_name
|
8
|
-
platform == "win" ? "phantomjs.exe" : "phantomjs"
|
9
|
-
end
|
10
|
-
|
11
|
-
def current_version
|
12
|
-
return nil unless File.exists?(binary_path)
|
13
|
-
%x(#{binary_path} --version).strip.match(/(\d\.\d+\.\d+)/)[1]
|
14
|
-
end
|
15
|
-
|
16
|
-
def newest_version
|
17
|
-
downloads.keys.sort.last
|
18
|
-
end
|
19
|
-
|
20
|
-
def downloads
|
21
|
-
doc = Nokogiri::XML.parse(OpenURI.open_uri(base_url))
|
22
|
-
items = doc.css(".execute").collect { |item| item["href"] }
|
23
|
-
format_platform = platform.dup.gsub('32', '-i686').gsub('64', 'x86_64')
|
24
|
-
items.select! { |item| item.include?(format_platform) }
|
25
|
-
items.each_with_object({}) do |item, hash|
|
26
|
-
hash[item[/-(\d+\.\d+\.\d+)-/, 1]] = "https://bitbucket.org#{item}"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def base_url
|
31
|
-
'https://bitbucket.org/ariya/phantomjs/downloads'
|
32
|
-
end
|
33
|
-
|
34
|
-
def extract_file(filename)
|
35
|
-
FileUtils.mv("#{platform_install_dir}/#{filename}bin/#{file_name}", file_name)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
data/spec/chromedriver_spec.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Webdrivers::Chromedriver do
|
4
|
-
|
5
|
-
let(:chromedriver) { Webdrivers::Chromedriver }
|
6
|
-
|
7
|
-
it 'downloads' do
|
8
|
-
chromedriver.download
|
9
|
-
file = "#{ENV['GEM_HOME']}/bin/chromedriver"
|
10
|
-
expect(File.exist?(file)).to eq true
|
11
|
-
end
|
12
|
-
|
13
|
-
it { expect(chromedriver.newest_version.to_f).to be >= 2.25 }
|
14
|
-
|
15
|
-
it { expect(chromedriver.downloads.size).to be >= 25 }
|
16
|
-
|
17
|
-
context "on a linux platform" do
|
18
|
-
before { allow(chromedriver).to receive(:platform) { "linux32" } }
|
19
|
-
|
20
|
-
it { expect(chromedriver.file_name).to match(/chromedriver$/) }
|
21
|
-
|
22
|
-
it { expect(chromedriver.binary_path).to match '.webdrivers/linux32/chromedriver' }
|
23
|
-
|
24
|
-
it { expect(chromedriver.download_url('2.24')).to match("2.24/chromedriver_linux32.zip") }
|
25
|
-
end
|
26
|
-
|
27
|
-
context "on a windows platform" do
|
28
|
-
before { allow(chromedriver).to receive(:platform) { "win" } }
|
29
|
-
|
30
|
-
it { expect(chromedriver.file_name).to match(/chromedriver\.exe$/) }
|
31
|
-
|
32
|
-
it { expect(chromedriver.binary_path).to match '.webdrivers/win/chromedriver' }
|
33
|
-
|
34
|
-
it { expect(chromedriver.download_url('2.24')).to match("2.24/chromedriver_win32.zip") }
|
35
|
-
end
|
36
|
-
end
|
data/spec/edgedriver_spec.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Webdrivers::Edgedriver do
|
4
|
-
|
5
|
-
let(:edgedriver) { Webdrivers::Edgedriver }
|
6
|
-
|
7
|
-
it 'downloads' do
|
8
|
-
edgedriver.download
|
9
|
-
file = "#{ENV['GEM_HOME']}/bin/MicrosoftWebDriver"
|
10
|
-
expect(File.exist?(file)).to eq true
|
11
|
-
end
|
12
|
-
|
13
|
-
it { expect(edgedriver.newest_version.to_f).to be >= 2.25 }
|
14
|
-
|
15
|
-
|
16
|
-
context "on a windows platform" do
|
17
|
-
before { allow(edgedriver).to receive(:platform) { "win" } }
|
18
|
-
|
19
|
-
it { expect(edgedriver.file_name).to match(/MicrosoftWebDriver\.exe$/) }
|
20
|
-
|
21
|
-
it { expect(edgedriver.binary_path).to match '.webdrivers/win/MicrosoftWebDriver.exe' }
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|