aranha-selenium 0.7.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 951e9e5db49e16c7825f8b24707b6b61236b78bef2a5b99c73860291e7dc7b23
4
- data.tar.gz: 7ed611aadeb3401b3e2e5c2d43f5d5554be7f92d32ffe8ec8e0bb25c93f7f93e
3
+ metadata.gz: 8049f9b39bc5bdcf4b0d1f99c2d56ebe27de42a6753ab6265761af7af4133e60
4
+ data.tar.gz: bb330a8b485846dcb70a32845f8e0ed98a70d80051e12e0efba9ad2341052fee
5
5
  SHA512:
6
- metadata.gz: 893bc2edc73ec2c6c2004729d3515e86bfd6ee809f2b5cf183647e308873fb8a6b4e970ccd3e721007c25dddcc7b64be0b7bde884298eb5c63c993ec2e14b3d4
7
- data.tar.gz: '04994c6b945fac7288c65232de46af2d4b10d2b1edc26c0b0ef1159462b09c28a38931c71df156f53d9a35b66391c5a306b69b6aa73cb67634496c1eaa625fe7'
6
+ metadata.gz: 4602f4e1be967594d4611a7e84d4d785196e633a4f35da9a909ed3998383f6b936bd056cd359ed8cd44b0841903f2883dd432aabb06aff0520a7f246688a19da
7
+ data.tar.gz: 12e8385c7eed3bf717a8bc90a57e39e20c08a577f14bb48994cc33a5eee172fe8b301fa93da7193e55adb3ef910eb2841bcfc117d93d165691e3253885770b15
@@ -42,7 +42,9 @@ module Aranha
42
42
 
43
43
  # @return [Aranha::Selenium::DriverOptions]
44
44
  def driver_options
45
- ::Aranha::Selenium::DriverOptions.assert(options.except(:driver))
45
+ ::Aranha::Selenium::DriverOptions.default.merge(
46
+ ::Aranha::Selenium::DriverOptions.assert(options.except(:driver))
47
+ )
46
48
  end
47
49
 
48
50
  require_sub __FILE__
@@ -17,8 +17,8 @@ module Aranha
17
17
  end
18
18
 
19
19
  # @return [Aranha::Selenium::DriverOptions]
20
- def instance
21
- @instance ||= new
20
+ def default
21
+ @default ||= new
22
22
  end
23
23
  end
24
24
 
@@ -39,6 +39,8 @@ module Aranha
39
39
  user_values.each { |k, v| send("#{k}=", v) }
40
40
  end
41
41
 
42
+ compare_by :to_h
43
+
42
44
  lists.option.each_value do |key|
43
45
  define_method(key) { send("#{key}_option").value }
44
46
  define_method("#{key}=") { |user_value| send("#{key}_option").user_value = user_value }
@@ -54,6 +56,17 @@ module Aranha
54
56
  end
55
57
  end
56
58
 
59
+ # @param other [Aranha::Selenium::DriverOptions]
60
+ # @return [Aranha::Selenium::DriverOptions]
61
+ def merge(other)
62
+ self.class.assert(to_h.merge(other.to_h))
63
+ end
64
+
65
+ # @return [Hash]
66
+ def to_h
67
+ options.values.reject { |opt| opt.user_value.nil? }.to_h { |opt| [opt.key, opt.user_value] }
68
+ end
69
+
57
70
  private
58
71
 
59
72
  def options
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aranha
4
+ module Selenium
5
+ class Session < ::SimpleDelegator
6
+ class FormRequest
7
+ class Field
8
+ class << self
9
+ # @param source [Enumeration, Hash]
10
+ # @return [Array<Aranha::Selenium::Session::FormRequest::Field>]
11
+ def assert_all(source)
12
+ if source.is_a?(::Hash)
13
+ assert_all_from_hash(source)
14
+ elsif source.is_a?(::Enumeration)
15
+ assert_all_from_enumerable(source)
16
+ else
17
+ raise ::ArgumentError, "Invalid source type: #{source.class}"
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def assert_all_from_enumerable(source)
24
+ source.map { |e| new(*e) }
25
+ end
26
+
27
+ def assert_all_from_hash(source)
28
+ source.map { |k, v| new(k, v) }
29
+ end
30
+ end
31
+
32
+ common_constructor :name, :value
33
+
34
+ # @return [String]
35
+ def to_js_object
36
+ "'#{name}': '#{value}'"
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_templates/core_ext'
4
+
5
+ module Aranha
6
+ module Selenium
7
+ class Session < ::SimpleDelegator
8
+ class FormRequest
9
+ acts_as_instance_method
10
+ common_constructor :session, :path, :verb, :fields do
11
+ self.fields = ::Aranha::Selenium::Session::FormRequest::Field.assert_all(fields)
12
+ end
13
+
14
+ def result
15
+ session.execute_script(script.pretty_debug)
16
+ end
17
+
18
+ private
19
+
20
+ # @return [String]
21
+ def script
22
+ template.child('form_request_function.js').apply(script_args: script_args)
23
+ end
24
+
25
+ # @return [String]
26
+ def script_args
27
+ ["'#{path}'", "'#{verb}'", script_fields_arg].join(', ')
28
+ end
29
+
30
+ # @return [String]
31
+ def script_fields_arg
32
+ "{#{fields.map(&:to_js_object).join(', ')}}"
33
+ end
34
+
35
+ require_sub __FILE__
36
+ end
37
+ end
38
+ end
39
+ end
@@ -8,7 +8,7 @@ require 'selenium-webdriver'
8
8
  module Aranha
9
9
  module Selenium
10
10
  class Session < ::SimpleDelegator
11
- require_sub __FILE__, include_modules: true
11
+ require_sub __FILE__, include_modules: true, require_mode: :kernel
12
12
  enable_simple_cache
13
13
 
14
14
  def initialize(options = {})
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Aranha
4
4
  module Selenium
5
- VERSION = '0.7.1'
5
+ VERSION = '0.9.0'
6
6
  end
7
7
  end
@@ -0,0 +1,22 @@
1
+ (function(path, method, params) {
2
+
3
+ // The rest of this code assumes you are not using a library.
4
+ // It can be made less verbose if you use one.
5
+ const form = document.createElement('form');
6
+ form.method = method;
7
+ form.action = path;
8
+
9
+ for (const key in params) {
10
+ if (params.hasOwnProperty(key)) {
11
+ const hiddenField = document.createElement('input');
12
+ hiddenField.type = 'hidden';
13
+ hiddenField.name = key;
14
+ hiddenField.value = params[key];
15
+
16
+ form.appendChild(hiddenField);
17
+ }
18
+ }
19
+
20
+ document.body.appendChild(form);
21
+ form.submit();
22
+ })( %%SCRIPT_ARGS%% );
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.7.1
4
+ version: 0.9.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: 2023-12-09 00:00:00.000000000 Z
11
+ date: 2024-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_fs
@@ -30,14 +30,34 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.120'
33
+ version: '0.121'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.120'
40
+ version: '0.121'
41
+ - !ruby/object:Gem::Dependency
42
+ name: eac_templates
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.5'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 0.5.1
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '0.5'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.5.1
41
61
  - !ruby/object:Gem::Dependency
42
62
  name: selenium-webdriver
43
63
  requirement: !ruby/object:Gem::Requirement
@@ -64,14 +84,14 @@ dependencies:
64
84
  requirements:
65
85
  - - "~>"
66
86
  - !ruby/object:Gem::Version
67
- version: '0.9'
87
+ version: '0.10'
68
88
  type: :development
69
89
  prerelease: false
70
90
  version_requirements: !ruby/object:Gem::Requirement
71
91
  requirements:
72
92
  - - "~>"
73
93
  - !ruby/object:Gem::Version
74
- version: '0.9'
94
+ version: '0.10'
75
95
  description:
76
96
  email:
77
97
  executables: []
@@ -90,9 +110,12 @@ files:
90
110
  - lib/aranha/selenium/session.rb
91
111
  - lib/aranha/selenium/session/downloads.rb
92
112
  - lib/aranha/selenium/session/find.rb
113
+ - lib/aranha/selenium/session/form_request.rb
114
+ - lib/aranha/selenium/session/form_request/field.rb
93
115
  - lib/aranha/selenium/session/select.rb
94
116
  - lib/aranha/selenium/session/wait.rb
95
117
  - lib/aranha/selenium/version.rb
118
+ - template/aranha/selenium/session/form_request/form_request_function.js
96
119
  homepage:
97
120
  licenses: []
98
121
  metadata: {}