aranha-selenium 0.8.0 → 0.9.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: 38da8ad6f2737626bb06a9d17c4088e797de9cfb7f3e48ac7313fe2a5a6fbf08
4
- data.tar.gz: feb50faa49ae4569110e6581c14181ec9929cc85487be6335acca527a7031b6a
3
+ metadata.gz: 8049f9b39bc5bdcf4b0d1f99c2d56ebe27de42a6753ab6265761af7af4133e60
4
+ data.tar.gz: bb330a8b485846dcb70a32845f8e0ed98a70d80051e12e0efba9ad2341052fee
5
5
  SHA512:
6
- metadata.gz: 6396875e4a91c55bd620be2af4428c34abbd1511418461bca45a4971cee8d358b9f560d71e8371f825103eb5308b8ce7d18ede0c6d67cb557151ae39ae9982e1
7
- data.tar.gz: e2b31b761174dfbd30c42981f949bae4bfb13bc7d2a20f3ccc7eed24f83bc24cfa44d6239f8391fd97ffb50859403376229b2e9d15fa98ce7d62757188670ba7
6
+ metadata.gz: 4602f4e1be967594d4611a7e84d4d785196e633a4f35da9a909ed3998383f6b936bd056cd359ed8cd44b0841903f2883dd432aabb06aff0520a7f246688a19da
7
+ data.tar.gz: 12e8385c7eed3bf717a8bc90a57e39e20c08a577f14bb48994cc33a5eee172fe8b301fa93da7193e55adb3ef910eb2841bcfc117d93d165691e3253885770b15
@@ -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.8.0'
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.8.0
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-15 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: {}