aranha-selenium 0.8.0 → 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: 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: {}