aranha-selenium 0.5.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b77cef3090b92e53523e8b58ca223c3f3d507d3f389fcb93b5ea14293761ffa4
4
- data.tar.gz: f7c4ad1976d059fda2b14ea3634575ca1e8a3c32233f00f51bfe0727865a4a0d
3
+ metadata.gz: 7aceb03be8d423ca084646615d2869147f8ae89137f8c753732dabebde6032f5
4
+ data.tar.gz: f39cd164dd36c4f333693a8d33ebadce8a5a13de0a70c25ce039714ace68c8b3
5
5
  SHA512:
6
- metadata.gz: 68e0c97869bfdf83a45fbcdc3d04eda5987148b85954657289e8ab40f8025f5fb508e22baef3ef4475fe9037d39c6ded8462dbc6d139d79daac0e1ca0d7ad5c7
7
- data.tar.gz: 987ab2d37efc2c98701485c36b03393640185e8a89fa804a510a4671a1d651ce3dc62fa9f9247deaa9aecd23e65b29e8514ec829a665da40d731679cbf553691
6
+ metadata.gz: 6caca3383682a545705954abbc971b07aa3a259ca03bc1c9be2d29b26274cf410d31fb67bf87ea408d1361a3bc9d748a2b0dcc90416662b91c63bf1d9794a218
7
+ data.tar.gz: 35a436b59edc41e266a5553ea8ffb495329d3b74ccd2ea4634a034a8cd8a659d39adaccf77bf14f5671bbb431a8feedded5f2c06926345b3aaa8bb81b1f21f10
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/selenium/driver_factory'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Aranha
7
+ module Selenium
8
+ class Defaults
9
+ class Option
10
+ common_constructor :owner, :key, :sanitizer, default: [nil] do
11
+ self.key = key.to_sym
12
+ end
13
+ attr_accessor :user_value
14
+
15
+ # @return [String]
16
+ def constant_name
17
+ "default_#{key}".upcase
18
+ end
19
+
20
+ # @return [Object]
21
+ def default_value
22
+ owner.class.const_get(constant_name)
23
+ end
24
+
25
+ # @return [String]
26
+ def envvar_name
27
+ "aranha_selenium_#{key}".upcase
28
+ end
29
+
30
+ # @return [Object]
31
+ def value
32
+ sanitized_value do
33
+ next ENV.fetch(envvar_name) if ENV.key?(envvar_name)
34
+ next user_value unless user_value.nil?
35
+
36
+ default_value
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ def sanitized_value(&block)
43
+ r = block.call
44
+ sanitizer.present? ? sanitizer.call(r) : r
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,41 @@
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_USER_AGENT = nil
16
+
17
+ %w[accept_insecure_certs downloads_dir headless user_agent].each do |key|
18
+ define_method(key) { send("#{key}_option").value }
19
+ define_method("#{key}=") { |user_value| send("#{key}_option").user_value = user_value }
20
+ define_method("#{key}_option") do
21
+ options[key] ||= ::Aranha::Selenium::Defaults::Option.new(self, key)
22
+ end
23
+ end
24
+
25
+ # @return [Aranha::Selenium::Defaults::Option]
26
+ def headless_option
27
+ options['headless'] ||= ::Aranha::Selenium::Defaults::Option.new(
28
+ self, 'headless', ->(v) { ::EacRubyUtils::Boolean.parse(v) }
29
+ )
30
+ end
31
+
32
+ private
33
+
34
+ def options
35
+ @options ||= {}
36
+ end
37
+
38
+ require_sub __FILE__
39
+ end
40
+ end
41
+ end
@@ -1,44 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support/json'
4
- require 'active_support/core_ext/hash/indifferent_access'
5
- require 'selenium-webdriver'
6
- require 'tmpdir'
3
+ require 'aranha/selenium/defaults'
4
+ require 'eac_ruby_utils/core_ext'
7
5
 
8
6
  module Aranha
9
7
  module Selenium
10
8
  class DriverFactory
11
9
  class Base
12
- DEFAULT_DOWNLOADS_DIR = ::File.join(::Dir.tmpdir, 'aranha_downloads_dir')
13
- DEFAULT_ACCEPT_INSECURE_CERTS = false
14
- DEFAULT_HEADLESS = false
15
- DEFAULT_USER_AGENT = nil
16
-
17
- class << self
18
- attr_writer :default_accept_insecure_certs, :default_downloads_dir, :default_headless,
19
- :default_user_agent
20
-
21
- def default_downloads_dir
22
- @default_downloads_dir || DEFAULT_DOWNLOADS_DIR
23
- end
24
-
25
- def default_accept_insecure_certs
26
- @default_accept_insecure_certs || DEFAULT_ACCEPT_INSECURE_CERTS
27
- end
28
-
29
- def default_headless
30
- @default_headless || DEFAULT_HEADLESS
31
- end
32
-
33
- def default_user_agent
34
- @default_user_agent || DEFAULT_USER_AGENT
35
- end
36
- end
37
-
38
- attr_reader :options
39
-
40
- def initialize(options)
41
- @options = options.with_indifferent_access.freeze
10
+ common_constructor :options do
11
+ self.options = options.with_indifferent_access.freeze
42
12
  end
43
13
 
44
14
  def build
@@ -75,7 +45,7 @@ module Aranha
75
45
  if options.key?(key)
76
46
  options.fetch(key)
77
47
  else
78
- ::Aranha::Selenium::DriverFactory::Base.send("default_#{key}")
48
+ ::Aranha::Selenium::Defaults.instance.send(key)
79
49
  end
80
50
  end
81
51
  end
@@ -15,8 +15,8 @@ module Aranha
15
15
  WAIT_DEFAULT_TIMEOUT
16
16
  end
17
17
 
18
- def wait_for_click(find_element_args)
19
- wait.until do
18
+ def wait_for_click(find_element_args, timeout = nil)
19
+ wait(timeout).until do
20
20
  element = find_element(find_element_args)
21
21
  element ? element_click(element) : nil
22
22
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Aranha
4
4
  module Selenium
5
- VERSION = '0.5.0'
5
+ VERSION = '0.6.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aranha-selenium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
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: 2022-10-27 00:00:00.000000000 Z
11
+ date: 2023-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_ruby_utils
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.106'
19
+ version: '0.117'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.106.1
22
+ version: 0.117.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '0.106'
29
+ version: '0.117'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.106.1
32
+ version: 0.117.1
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: selenium-webdriver
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -72,6 +72,8 @@ extra_rdoc_files: []
72
72
  files:
73
73
  - Gemfile
74
74
  - lib/aranha/selenium.rb
75
+ - lib/aranha/selenium/defaults.rb
76
+ - lib/aranha/selenium/defaults/option.rb
75
77
  - lib/aranha/selenium/driver_factory.rb
76
78
  - lib/aranha/selenium/driver_factory/base.rb
77
79
  - lib/aranha/selenium/driver_factory/chrome.rb