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 +4 -4
- data/lib/aranha/selenium/session/form_request/field.rb +42 -0
- data/lib/aranha/selenium/session/form_request.rb +39 -0
- data/lib/aranha/selenium/session.rb +1 -1
- data/lib/aranha/selenium/version.rb +1 -1
- data/template/aranha/selenium/session/form_request/form_request_function.js +22 -0
- metadata +29 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8049f9b39bc5bdcf4b0d1f99c2d56ebe27de42a6753ab6265761af7af4133e60
|
4
|
+
data.tar.gz: bb330a8b485846dcb70a32845f8e0ed98a70d80051e12e0efba9ad2341052fee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 = {})
|
@@ -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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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: {}
|