crabfarm 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/crabfarm/adapters/browser/abstract_webdriver.rb +1 -6
- data/lib/crabfarm/adapters/browser/chrome.rb +2 -8
- data/lib/crabfarm/adapters/browser/firefox.rb +2 -10
- data/lib/crabfarm/adapters/browser/phantom_js.rb +12 -16
- data/lib/crabfarm/adapters/browser/remote_webdriver.rb +2 -15
- data/lib/crabfarm/configuration.rb +1 -1
- data/lib/crabfarm/modes/recorder.rb +42 -12
- data/lib/crabfarm/support/webdriver_factory.rb +59 -0
- data/lib/crabfarm/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c304e14669cf10f756664e0971f04051644c41ed
|
4
|
+
data.tar.gz: 820b288d8a92ce0d9fdb2bba0a61441f49b773c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00c1879c2ec15db0706a42970822cc8b3431f602f224b51b2f8ea0e3ee4fb194020bb1299d191b90d00b541ec93941b85f75454446e24d46d65e3a1979f03a03
|
7
|
+
data.tar.gz: 2bdff2459cf55d9c936fa48d34af8e82d66df08d0e97ed7062dac4e1c6c79c14bcd4eeac53f76e9b3e4da434ae3bc30c9e0bb7630aad2cadee37afe53cf3bcef
|
@@ -19,12 +19,7 @@ module Crabfarm
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def build_driver(_session_id)
|
22
|
-
|
23
|
-
# load driver and configure general selenium settings
|
24
|
-
driver = build_webdriver_instance
|
25
|
-
driver.manage.window.resize_to(config[:window_width], config[:window_height]) rescue nil
|
26
|
-
|
27
|
-
return wrap_driver driver
|
22
|
+
return wrap_driver build_webdriver_instance
|
28
23
|
end
|
29
24
|
|
30
25
|
def release_driver(_driver)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'crabfarm/support/webdriver_factory'
|
1
2
|
require "crabfarm/adapters/browser/abstract_webdriver"
|
2
3
|
|
3
4
|
module Crabfarm
|
@@ -8,14 +9,7 @@ module Crabfarm
|
|
8
9
|
private
|
9
10
|
|
10
11
|
def build_webdriver_instance
|
11
|
-
|
12
|
-
|
13
|
-
if config[:proxy].present?
|
14
|
-
switches << "--proxy-server=#{config[:proxy]}"
|
15
|
-
switches << "--ignore-certificate-errors"
|
16
|
-
end
|
17
|
-
|
18
|
-
Selenium::WebDriver.for :chrome, :switches => switches
|
12
|
+
Support::WebdriverFactory.build_chrome_driver config
|
19
13
|
end
|
20
14
|
|
21
15
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'crabfarm/support/webdriver_factory'
|
1
2
|
require "crabfarm/adapters/browser/abstract_webdriver"
|
2
3
|
|
3
4
|
module Crabfarm
|
@@ -8,16 +9,7 @@ module Crabfarm
|
|
8
9
|
private
|
9
10
|
|
10
11
|
def build_webdriver_instance
|
11
|
-
|
12
|
-
|
13
|
-
if config.key? :proxy
|
14
|
-
profile.proxy = Selenium::WebDriver::Proxy.new({
|
15
|
-
:http => config[:proxy],
|
16
|
-
:ssl => config[:proxy]
|
17
|
-
})
|
18
|
-
end
|
19
|
-
|
20
|
-
Selenium::WebDriver.for :firefox, :profile => profile
|
12
|
+
Support::WebdriverFactory.build_firefox_driver config
|
21
13
|
end
|
22
14
|
|
23
15
|
end
|
@@ -1,5 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'crabfarm/support/webdriver_factory'
|
2
|
+
require 'crabfarm/adapters/browser/abstract_webdriver'
|
3
|
+
require 'crabfarm/phantom_runner'
|
3
4
|
|
4
5
|
module Crabfarm
|
5
6
|
module Adapters
|
@@ -18,19 +19,7 @@ module Crabfarm
|
|
18
19
|
private
|
19
20
|
|
20
21
|
def build_webdriver_instance
|
21
|
-
|
22
|
-
client.timeout = config[:remote_timeout]
|
23
|
-
|
24
|
-
driver = Selenium::WebDriver.for :remote, {
|
25
|
-
:url => phantom_url,
|
26
|
-
:http_client => client,
|
27
|
-
:desired_capabilities => config[:capabilities] || Selenium::WebDriver::Remote::Capabilities.firefox
|
28
|
-
}
|
29
|
-
|
30
|
-
# TODO: not sure if this is necessary...
|
31
|
-
# driver.send(:bridge).setWindowSize(config[:window_width], config[:window_height])
|
32
|
-
|
33
|
-
return driver
|
22
|
+
Support::WebdriverFactory.build_remote_driver driver_config
|
34
23
|
end
|
35
24
|
|
36
25
|
def load_and_start_phantom
|
@@ -49,10 +38,17 @@ module Crabfarm
|
|
49
38
|
}
|
50
39
|
end
|
51
40
|
|
52
|
-
|
41
|
+
def phantom_url
|
53
42
|
"http://localhost:#{@phantom.port}"
|
54
43
|
end
|
55
44
|
|
45
|
+
def driver_config
|
46
|
+
config.merge({
|
47
|
+
remote_host: phantom_url,
|
48
|
+
proxy: nil
|
49
|
+
})
|
50
|
+
end
|
51
|
+
|
56
52
|
end
|
57
53
|
end
|
58
54
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'crabfarm/support/webdriver_factory'
|
1
2
|
require "crabfarm/adapters/browser/abstract_webdriver"
|
2
3
|
|
3
4
|
module Crabfarm
|
@@ -8,21 +9,7 @@ module Crabfarm
|
|
8
9
|
private
|
9
10
|
|
10
11
|
def build_webdriver_instance
|
11
|
-
|
12
|
-
client.timeout = config[:remote_timeout]
|
13
|
-
|
14
|
-
if config.has_key? :proxy
|
15
|
-
client.proxy = Selenium::WebDriver::Proxy.new({
|
16
|
-
:http => config[:proxy],
|
17
|
-
:ssl => config[:proxy]
|
18
|
-
})
|
19
|
-
end
|
20
|
-
|
21
|
-
Selenium::WebDriver.for(:remote, {
|
22
|
-
:url => config[:remote_host],
|
23
|
-
:http_client => client,
|
24
|
-
:desired_capabilities => config[:capabilities] || Selenium::WebDriver::Remote::Capabilities.firefox
|
25
|
-
})
|
12
|
+
WebdriverFactory.build_remote_driver config
|
26
13
|
end
|
27
14
|
|
28
15
|
end
|
@@ -1,33 +1,28 @@
|
|
1
1
|
require 'rainbow'
|
2
2
|
require 'rainbow/ext/string'
|
3
|
+
require 'crabfarm/support/webdriver_factory'
|
3
4
|
require 'crabfarm/crabtrap_runner'
|
4
5
|
|
5
6
|
module Crabfarm
|
6
7
|
module Modes
|
7
8
|
module Recorder
|
9
|
+
extend self
|
8
10
|
|
9
|
-
def
|
11
|
+
def memento_path(_name)
|
10
12
|
File.join(GlobalState.mementos_path, _name + '.json.gz')
|
11
13
|
end
|
12
14
|
|
13
|
-
def
|
15
|
+
def start(_target, _replay=false)
|
14
16
|
return puts "Must provide a recording target" unless _target.is_a? String
|
15
17
|
|
16
18
|
target_path = memento_path _target
|
17
19
|
return puts "Memento file does not exist: #{target_path}" if _replay and not File.exist? target_path
|
18
20
|
|
19
|
-
|
20
|
-
crabtrap_config[:mode] = _replay ? :replay : :capture
|
21
|
-
crabtrap_config[:port] = Utils::PortDiscovery.find_available_port
|
22
|
-
crabtrap_config[:bucket_path] = target_path
|
23
|
-
|
24
|
-
crabtrap = CrabtrapRunner.new crabtrap_config
|
25
|
-
crabtrap.start
|
21
|
+
start_crabtrap _replay, target_path
|
26
22
|
|
27
23
|
begin
|
28
|
-
|
29
|
-
|
30
|
-
driver = browser_factory.build_driver nil
|
24
|
+
driver = build_driver Crabfarm.config.recorder_driver
|
25
|
+
return puts "Invalid recorder_driver name '#{Crabfarm.config.recorder_driver}'" if driver.nil?
|
31
26
|
|
32
27
|
begin
|
33
28
|
puts "Press Ctrl-C or close browser to stop #{_replay ? 'playback' : 'capturing'}."
|
@@ -46,6 +41,41 @@ module Crabfarm
|
|
46
41
|
end
|
47
42
|
end
|
48
43
|
|
44
|
+
private
|
45
|
+
|
46
|
+
def start_crabtrap(_replay, _target_path)
|
47
|
+
crabtrap_config = Crabfarm.config.crabtrap_config
|
48
|
+
crabtrap_config[:mode] = _replay ? :replay : :capture
|
49
|
+
crabtrap_config[:port] = Utils::PortDiscovery.find_available_port
|
50
|
+
crabtrap_config[:bucket_path] = _target_path
|
51
|
+
|
52
|
+
@crabtrap = CrabtrapRunner.new crabtrap_config
|
53
|
+
@crabtrap.start
|
54
|
+
end
|
55
|
+
|
56
|
+
def crabtrap
|
57
|
+
@crabtrap
|
58
|
+
end
|
59
|
+
|
60
|
+
def build_driver(_name)
|
61
|
+
case _name.to_sym
|
62
|
+
when :firefox
|
63
|
+
Crabfarm::Support::WebdriverFactory.build_firefox_driver driver_config
|
64
|
+
when :chrome
|
65
|
+
Crabfarm::Support::WebdriverFactory.build_chrome_driver driver_config
|
66
|
+
else return nil end
|
67
|
+
end
|
68
|
+
|
69
|
+
def driver_config
|
70
|
+
{
|
71
|
+
proxy: "127.0.0.1:#{crabtrap.port}",
|
72
|
+
window_width: Crabfarm.config.webdriver_window_width,
|
73
|
+
window_height: Crabfarm.config.webdriver_window_height
|
74
|
+
}
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
|
49
79
|
end
|
50
80
|
end
|
51
81
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'selenium-webdriver'
|
2
|
+
|
3
|
+
module Crabfarm
|
4
|
+
module Support
|
5
|
+
module WebdriverFactory
|
6
|
+
extend self
|
7
|
+
|
8
|
+
def build_chrome_driver(_options={})
|
9
|
+
switches = []
|
10
|
+
|
11
|
+
if _options[:proxy].present?
|
12
|
+
switches << "--proxy-server=#{_options[:proxy]}"
|
13
|
+
switches << "--ignore-certificate-errors"
|
14
|
+
end
|
15
|
+
|
16
|
+
common_setup Selenium::WebDriver.for(:chrome, :switches => switches), _options
|
17
|
+
end
|
18
|
+
|
19
|
+
def build_firefox_driver(_options={})
|
20
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
21
|
+
|
22
|
+
if _options[:proxy].present?
|
23
|
+
profile.proxy = Selenium::WebDriver::Proxy.new({
|
24
|
+
:http => _options[:proxy],
|
25
|
+
:ssl => _options[:proxy]
|
26
|
+
})
|
27
|
+
end
|
28
|
+
|
29
|
+
common_setup Selenium::WebDriver.for(:firefox, :profile => profile), _options
|
30
|
+
end
|
31
|
+
|
32
|
+
def build_remote_driver(_options={})
|
33
|
+
client = Selenium::WebDriver::Remote::Http::Default.new
|
34
|
+
client.timeout = _options[:remote_timeout]
|
35
|
+
|
36
|
+
if _options[:proxy].present?
|
37
|
+
client.proxy = Selenium::WebDriver::Proxy.new({
|
38
|
+
:http => _options[:proxy],
|
39
|
+
:ssl => _options[:proxy]
|
40
|
+
})
|
41
|
+
end
|
42
|
+
|
43
|
+
common_setup(Selenium::WebDriver.for(:remote, {
|
44
|
+
:url => _options[:remote_host],
|
45
|
+
:http_client => client,
|
46
|
+
:desired_capabilities => _options[:capabilities] || Selenium::WebDriver::Remote::Capabilities.firefox
|
47
|
+
}), _options)
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def common_setup(_driver, _options)
|
53
|
+
_driver.manage.window.resize_to(_options[:window_width], _options[:window_height]) rescue nil
|
54
|
+
return _driver
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/lib/crabfarm/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crabfarm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ignacio Baixas
|
@@ -420,6 +420,7 @@ files:
|
|
420
420
|
- lib/crabfarm/strategies.rb
|
421
421
|
- lib/crabfarm/support/custom_puma.rb
|
422
422
|
- lib/crabfarm/support/gli.rb
|
423
|
+
- lib/crabfarm/support/webdriver_factory.rb
|
423
424
|
- lib/crabfarm/templates/boot.rb.erb
|
424
425
|
- lib/crabfarm/templates/crabfarm_bin.erb
|
425
426
|
- lib/crabfarm/templates/Crabfile.erb
|