aranha-selenium 0.7.0 → 0.7.1
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 +4 -4
- data/Gemfile +2 -2
- data/lib/aranha/selenium/driver_factory/base.rb +13 -33
- data/lib/aranha/selenium/driver_factory/firefox.rb +1 -0
- data/lib/aranha/selenium/driver_factory.rb +11 -6
- data/lib/aranha/selenium/{defaults → driver_options}/option.rb +1 -1
- data/lib/aranha/selenium/driver_options.rb +66 -0
- data/lib/aranha/selenium/session/downloads.rb +12 -6
- data/lib/aranha/selenium/session.rb +7 -3
- data/lib/aranha/selenium/version.rb +1 -1
- metadata +23 -15
- data/lib/aranha/selenium/defaults.rb +0 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 951e9e5db49e16c7825f8b24707b6b61236b78bef2a5b99c73860291e7dc7b23
|
4
|
+
data.tar.gz: 7ed611aadeb3401b3e2e5c2d43f5d5554be7f92d32ffe8ec8e0bb25c93f7f93e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 893bc2edc73ec2c6c2004729d3515e86bfd6ee809f2b5cf183647e308873fb8a6b4e970ccd3e721007c25dddcc7b64be0b7bde884298eb5c63c993ec2e14b3d4
|
7
|
+
data.tar.gz: '04994c6b945fac7288c65232de46af2d4b10d2b1edc26c0b0ef1159462b09c28a38931c71df156f53d9a35b66391c5a306b69b6aa73cb67634496c1eaa625fe7'
|
data/Gemfile
CHANGED
@@ -4,5 +4,5 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
gemspec
|
6
6
|
|
7
|
-
local_gemfile =
|
8
|
-
eval_gemfile local_gemfile if
|
7
|
+
local_gemfile = File.join(File.dirname(__FILE__), 'Gemfile.local')
|
8
|
+
eval_gemfile local_gemfile if File.exist?(local_gemfile)
|
@@ -1,51 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'aranha/selenium/
|
3
|
+
require 'aranha/selenium/driver_options'
|
4
4
|
require 'eac_ruby_utils/core_ext'
|
5
5
|
|
6
6
|
module Aranha
|
7
7
|
module Selenium
|
8
8
|
class DriverFactory
|
9
9
|
class Base
|
10
|
+
# @!attribute [r] options
|
11
|
+
# @return [Aranha::Selenium::DriverOptions]
|
12
|
+
|
13
|
+
# @!method initialize(options)
|
14
|
+
# @param options [Aranha::Selenium::DriverOptions]
|
10
15
|
common_constructor :options do
|
11
|
-
self.options = options
|
16
|
+
self.options = ::Aranha::Selenium::DriverOptions.assert(options)
|
12
17
|
end
|
13
18
|
|
14
19
|
def build
|
15
20
|
raise 'Must be overrided'
|
16
21
|
end
|
17
22
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
def headless?
|
27
|
-
option_value(:headless)
|
28
|
-
end
|
29
|
-
|
30
|
-
def profile_dir
|
31
|
-
option_value(:profile_dir)
|
32
|
-
end
|
33
|
-
|
34
|
-
def profile_name
|
35
|
-
options[:profile_name]
|
36
|
-
end
|
37
|
-
|
38
|
-
def user_agent
|
39
|
-
option_value(:user_agent)
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def option_value(key)
|
45
|
-
if options.key?(key)
|
46
|
-
options.fetch(key)
|
47
|
-
else
|
48
|
-
::Aranha::Selenium::Defaults.instance.send(key)
|
23
|
+
::Aranha::Selenium::DriverOptions.lists.option.each_value do |option_key|
|
24
|
+
method_name = option_key.to_s
|
25
|
+
method_name = "#{method_name}?" if ::Aranha::Selenium::DriverOptions::BOOLEAN_OPTIONS
|
26
|
+
.include?(option_key)
|
27
|
+
define_method method_name do
|
28
|
+
options.send(method_name)
|
49
29
|
end
|
50
30
|
end
|
51
31
|
end
|
@@ -40,6 +40,7 @@ module Aranha
|
|
40
40
|
r = {
|
41
41
|
'browser.download.dir' => downloads_dir,
|
42
42
|
'browser.download.folderList' => 2,
|
43
|
+
'browser.download.start_downloads_in_tmp_dir' => true,
|
43
44
|
'browser.helperApps.neverAsk.saveToDisk' => auto_download_mime_types.join(';'),
|
44
45
|
'pdfjs.disabled' => true
|
45
46
|
}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'aranha/selenium/driver_options'
|
3
4
|
require 'eac_ruby_utils/core_ext'
|
4
5
|
|
5
6
|
module Aranha
|
@@ -11,10 +12,13 @@ module Aranha
|
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
|
-
|
15
|
+
# @!attribute [r] options
|
16
|
+
# @return [ActiveSupport::HashWithIndifferentAccess]
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
+
# @!method initialize(options)
|
19
|
+
# @param options [ActiveSupport::HashWithIndifferentAccess]
|
20
|
+
common_constructor :options do
|
21
|
+
self.options = options.with_indifferent_access.freeze
|
18
22
|
end
|
19
23
|
|
20
24
|
def create_driver
|
@@ -28,16 +32,17 @@ module Aranha
|
|
28
32
|
def driver_class
|
29
33
|
Aranha::Selenium::DriverFactory.const_get(driver_name.classify)
|
30
34
|
rescue NameError
|
31
|
-
raise "Unknown Aranha Selenium driver: \"#{driver_name}\"" \
|
32
|
-
|
35
|
+
raise "Unknown Aranha Selenium driver: \"#{driver_name}\" " \
|
36
|
+
"(Class \"Aranha::Selenium::DriverFactory::#{driver_name.classify}\" not found)"
|
33
37
|
end
|
34
38
|
|
35
39
|
def default_driver_name
|
36
40
|
:firefox
|
37
41
|
end
|
38
42
|
|
43
|
+
# @return [Aranha::Selenium::DriverOptions]
|
39
44
|
def driver_options
|
40
|
-
options.except(:driver)
|
45
|
+
::Aranha::Selenium::DriverOptions.assert(options.except(:driver))
|
41
46
|
end
|
42
47
|
|
43
48
|
require_sub __FILE__
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/boolean'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'tmpdir'
|
6
|
+
|
7
|
+
module Aranha
|
8
|
+
module Selenium
|
9
|
+
class DriverOptions
|
10
|
+
class << self
|
11
|
+
# @return [Aranha::Selenium::DriverOptions]
|
12
|
+
# @param [Aranha::Selenium::DriverOptions, Hash]
|
13
|
+
def assert(source)
|
14
|
+
return source if source.is_a?(self)
|
15
|
+
|
16
|
+
new(source)
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [Aranha::Selenium::DriverOptions]
|
20
|
+
def instance
|
21
|
+
@instance ||= new
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
enable_listable
|
26
|
+
lists.add_symbol :option, :accept_insecure_certs, :downloads_dir, :headless, :profile_dir,
|
27
|
+
:profile_name, :user_agent
|
28
|
+
BOOLEAN_OPTIONS = [OPTION_ACCEPT_INSECURE_CERTS, OPTION_HEADLESS].freeze
|
29
|
+
|
30
|
+
DEFAULT_DOWNLOADS_DIR = ::File.join(::Dir.tmpdir, 'aranha_downloads_dir')
|
31
|
+
DEFAULT_ACCEPT_INSECURE_CERTS = false
|
32
|
+
DEFAULT_HEADLESS = false
|
33
|
+
DEFAULT_PROFILE_DIR = nil
|
34
|
+
DEFAULT_PROFILE_NAME = nil
|
35
|
+
DEFAULT_USER_AGENT = nil
|
36
|
+
|
37
|
+
# @param user_values [Hash]
|
38
|
+
def initialize(user_values = {})
|
39
|
+
user_values.each { |k, v| send("#{k}=", v) }
|
40
|
+
end
|
41
|
+
|
42
|
+
lists.option.each_value do |key|
|
43
|
+
define_method(key) { send("#{key}_option").value }
|
44
|
+
define_method("#{key}=") { |user_value| send("#{key}_option").user_value = user_value }
|
45
|
+
|
46
|
+
option_proc = nil
|
47
|
+
if BOOLEAN_OPTIONS.include?(key)
|
48
|
+
option_proc = proc { |v| ::EacRubyUtils::Boolean.parse(v) }
|
49
|
+
define_method("#{key}?") { send(key) }
|
50
|
+
end
|
51
|
+
|
52
|
+
define_method("#{key}_option") do
|
53
|
+
options[key] ||= ::Aranha::Selenium::DriverOptions::Option.new(self, key, option_proc)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def options
|
60
|
+
@options ||= {}
|
61
|
+
end
|
62
|
+
|
63
|
+
require_sub __FILE__
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -1,19 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'eac_fs/file_info'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
3
5
|
require 'tmpdir'
|
4
6
|
|
5
7
|
module Aranha
|
6
8
|
module Selenium
|
7
9
|
class Session < ::SimpleDelegator
|
8
10
|
class Downloads
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
# @return [Enumerable<Pathname>]
|
12
|
+
def current
|
13
|
+
dir.glob('**/*').select do |path|
|
14
|
+
!::EacFs::FileInfo.new(path).open? && path.size.positive?
|
15
|
+
rescue Errno::ENOENT
|
16
|
+
false
|
17
|
+
end
|
13
18
|
end
|
14
19
|
|
15
|
-
|
16
|
-
|
20
|
+
# @return [Pathname]
|
21
|
+
def dir
|
22
|
+
@dir ||= ::Dir.mktmpdir.to_pathname
|
17
23
|
end
|
18
24
|
end
|
19
25
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'aranha/selenium/driver_options'
|
3
4
|
require 'aranha/selenium/driver_factory'
|
4
5
|
require 'eac_ruby_utils/core_ext'
|
5
6
|
require 'selenium-webdriver'
|
@@ -9,13 +10,11 @@ module Aranha
|
|
9
10
|
class Session < ::SimpleDelegator
|
10
11
|
require_sub __FILE__, include_modules: true
|
11
12
|
enable_simple_cache
|
12
|
-
attr_reader :downloads
|
13
13
|
|
14
14
|
def initialize(options = {})
|
15
|
-
@downloads = Downloads.new
|
16
15
|
super(
|
17
16
|
::Aranha::Selenium::DriverFactory.create_driver(
|
18
|
-
options.merge(
|
17
|
+
options.merge(::Aranha::Selenium::DriverOptions::OPTION_DOWNLOADS_DIR => downloads.dir)
|
19
18
|
)
|
20
19
|
)
|
21
20
|
end
|
@@ -28,6 +27,11 @@ module Aranha
|
|
28
27
|
"<html>\n#{s}\n</html>\n"
|
29
28
|
end
|
30
29
|
|
30
|
+
# @return [Aranha::Selenium::Session::Downloads]
|
31
|
+
def downloads
|
32
|
+
@downloads ||= ::Aranha::Selenium::Session::Downloads.new
|
33
|
+
end
|
34
|
+
|
31
35
|
private
|
32
36
|
|
33
37
|
def element_click(element)
|
metadata
CHANGED
@@ -1,35 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aranha-selenium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: eac_fs
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 0.117.1
|
19
|
+
version: '0.17'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
30
|
-
|
26
|
+
version: '0.17'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: eac_ruby_utils
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.120'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
31
39
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
40
|
+
version: '0.120'
|
33
41
|
- !ruby/object:Gem::Dependency
|
34
42
|
name: selenium-webdriver
|
35
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,14 +64,14 @@ dependencies:
|
|
56
64
|
requirements:
|
57
65
|
- - "~>"
|
58
66
|
- !ruby/object:Gem::Version
|
59
|
-
version: 0.
|
67
|
+
version: '0.9'
|
60
68
|
type: :development
|
61
69
|
prerelease: false
|
62
70
|
version_requirements: !ruby/object:Gem::Requirement
|
63
71
|
requirements:
|
64
72
|
- - "~>"
|
65
73
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.
|
74
|
+
version: '0.9'
|
67
75
|
description:
|
68
76
|
email:
|
69
77
|
executables: []
|
@@ -72,13 +80,13 @@ extra_rdoc_files: []
|
|
72
80
|
files:
|
73
81
|
- Gemfile
|
74
82
|
- lib/aranha/selenium.rb
|
75
|
-
- lib/aranha/selenium/defaults.rb
|
76
|
-
- lib/aranha/selenium/defaults/option.rb
|
77
83
|
- lib/aranha/selenium/driver_factory.rb
|
78
84
|
- lib/aranha/selenium/driver_factory/base.rb
|
79
85
|
- lib/aranha/selenium/driver_factory/chrome.rb
|
80
86
|
- lib/aranha/selenium/driver_factory/firefox.rb
|
81
87
|
- lib/aranha/selenium/driver_factory/firefox_auto_download_mime_types
|
88
|
+
- lib/aranha/selenium/driver_options.rb
|
89
|
+
- lib/aranha/selenium/driver_options/option.rb
|
82
90
|
- lib/aranha/selenium/session.rb
|
83
91
|
- lib/aranha/selenium/session/downloads.rb
|
84
92
|
- lib/aranha/selenium/session/find.rb
|
@@ -96,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
104
|
requirements:
|
97
105
|
- - ">="
|
98
106
|
- !ruby/object:Gem::Version
|
99
|
-
version: '
|
107
|
+
version: '2.7'
|
100
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
109
|
requirements:
|
102
110
|
- - ">="
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/boolean'
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
5
|
-
require 'tmpdir'
|
6
|
-
|
7
|
-
module Aranha
|
8
|
-
module Selenium
|
9
|
-
class Defaults
|
10
|
-
include ::Singleton
|
11
|
-
|
12
|
-
DEFAULT_DOWNLOADS_DIR = ::File.join(::Dir.tmpdir, 'aranha_downloads_dir')
|
13
|
-
DEFAULT_ACCEPT_INSECURE_CERTS = false
|
14
|
-
DEFAULT_HEADLESS = false
|
15
|
-
DEFAULT_PROFILE_DIR = nil
|
16
|
-
DEFAULT_USER_AGENT = nil
|
17
|
-
|
18
|
-
%w[accept_insecure_certs downloads_dir headless profile_dir user_agent].each do |key|
|
19
|
-
define_method(key) { send("#{key}_option").value }
|
20
|
-
define_method("#{key}=") { |user_value| send("#{key}_option").user_value = user_value }
|
21
|
-
define_method("#{key}_option") do
|
22
|
-
options[key] ||= ::Aranha::Selenium::Defaults::Option.new(self, key)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# @return [Aranha::Selenium::Defaults::Option]
|
27
|
-
def headless_option
|
28
|
-
options['headless'] ||= ::Aranha::Selenium::Defaults::Option.new(
|
29
|
-
self, 'headless', ->(v) { ::EacRubyUtils::Boolean.parse(v) }
|
30
|
-
)
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def options
|
36
|
-
@options ||= {}
|
37
|
-
end
|
38
|
-
|
39
|
-
require_sub __FILE__
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|