aranha-selenium 0.10.1 → 0.11.1
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 +4 -4
- data/lib/aranha/selenium/session/element.rb +60 -0
- data/lib/aranha/selenium/session/find.rb +11 -8
- data/lib/aranha/selenium/session/scroll.rb +47 -0
- data/lib/aranha/selenium/session/wait.rb +7 -5
- data/lib/aranha/selenium/session.rb +3 -9
- data/lib/aranha/selenium/version.rb +1 -1
- metadata +8 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b17f755bf67c8814c6c608817a23ddd0fc2528c6806da5e1ee72b9929d197ce
|
4
|
+
data.tar.gz: 93ac73e352f1759b467c7161511a02b47347052e3275a73518ffb8b20cb07c1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1db2ce0c8c9e20e5fe35104349e95226549bc39c8601c07601549b5dc49f598af28a36d0eb5c66a3b304f1314d75b05b2e357e06faad3ed4891adad6ed6cdec
|
7
|
+
data.tar.gz: bb7a762a7be918feeece1db522149df855196b85d121674bf6f4d03661a4ba505fd417d2a8236e89841e738b5beaaad322194f5ca740f71d2582b57b998e1189
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Aranha
|
6
|
+
module Selenium
|
7
|
+
class Session < ::SimpleDelegator
|
8
|
+
class Element
|
9
|
+
common_constructor :session, :find_args
|
10
|
+
|
11
|
+
# @return [Boolean]
|
12
|
+
def click
|
13
|
+
click!
|
14
|
+
true
|
15
|
+
rescue ::Selenium::WebDriver::Error::ElementClickInterceptedError,
|
16
|
+
::Selenium::WebDriver::Error::ElementNotInteractableError,
|
17
|
+
::Selenium::WebDriver::Error::NoSuchElementError,
|
18
|
+
::Selenium::WebDriver::Error::StaleElementReferenceError
|
19
|
+
false
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [self]
|
23
|
+
# @raise [Selenium::WebDriver::Error::ElementClickInterceptedError]
|
24
|
+
# @raise [Selenium::WebDriver::Error::ElementNotInteractableError]
|
25
|
+
# @raise [Selenium::WebDriver::Error::NoSuchElementError]
|
26
|
+
# @raise [Selenium::WebDriver::Error::StaleElementReferenceError]
|
27
|
+
def click!
|
28
|
+
find!.click
|
29
|
+
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
# @return [Selenium::WebDriver::Element, nil]
|
34
|
+
def find
|
35
|
+
r = session.find_elements(*find_args)
|
36
|
+
r.any? ? r.first : nil
|
37
|
+
end
|
38
|
+
|
39
|
+
# @return [Selenium::WebDriver::Element]
|
40
|
+
# @raise [Selenium::WebDriver::Error::NoSuchElementError]
|
41
|
+
def find!
|
42
|
+
return find_args.first if find_args.count >= 1 &&
|
43
|
+
find_args.first.is_a?(::Selenium::WebDriver::Element)
|
44
|
+
|
45
|
+
session.__getobj__.find_element(*find_args)
|
46
|
+
end
|
47
|
+
|
48
|
+
# @param session_wait_args [Array] Arguments for +Aranha::Selenium::Session::Wait.wait+.
|
49
|
+
# @return [self]
|
50
|
+
def wait_click(*session_wait_args, &block)
|
51
|
+
session.wait(*session_wait_args).until do
|
52
|
+
block.if_present(&:call)
|
53
|
+
click
|
54
|
+
end
|
55
|
+
self
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -1,21 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'aranha/selenium/session/element'
|
3
4
|
require 'selenium-webdriver'
|
4
5
|
|
5
6
|
module Aranha
|
6
7
|
module Selenium
|
7
8
|
class Session < ::SimpleDelegator
|
8
9
|
module Find
|
9
|
-
# @
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
# @param find_element_args [Array] Argujments for +Selenium::WebDriver::Find.find_element+.
|
11
|
+
# @return [Selenium::WebDriver::Element]
|
12
|
+
# @raise [Selenium::WebDriver::Error::NoSuchElementError]
|
13
|
+
def find_element(*find_element_args)
|
14
|
+
element(*find_element_args).find!
|
14
15
|
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
# @param find_element_args [Array] Argujments for +Selenium::WebDriver::Find.find_elements+.
|
18
|
+
# @deprecated Use +{#element}.find+ instead.
|
19
|
+
# @return [Selenium::WebDriver::Element, nil]
|
20
|
+
def find_or_not_element(*find_element_args)
|
21
|
+
element(*find_element_args).find
|
19
22
|
end
|
20
23
|
end
|
21
24
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'selenium-webdriver'
|
4
|
+
|
5
|
+
module Aranha
|
6
|
+
module Selenium
|
7
|
+
class Session < ::SimpleDelegator
|
8
|
+
module Scroll
|
9
|
+
NULL_SCROLL = 0
|
10
|
+
DEFAULT_SCROLL = 100
|
11
|
+
|
12
|
+
# @param delta_x [Integer] Number of pixels.
|
13
|
+
# @param delta_y [Integer] Number of pixels.
|
14
|
+
# @return [self]
|
15
|
+
def scroll_by(delta_x, delta_y)
|
16
|
+
execute_script("window.scrollBy(#{delta_x.to_i}, #{delta_y.to_i})")
|
17
|
+
|
18
|
+
self
|
19
|
+
end
|
20
|
+
|
21
|
+
# @param delta_x [Integer] Number of pixels.
|
22
|
+
# @return [self]
|
23
|
+
def scroll_left_by(delta_x = DEFAULT_SCROLL)
|
24
|
+
scroll_right_by(-delta_x)
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param delta_y [Integer] Number of pixels.
|
28
|
+
# @return [self]
|
29
|
+
def scroll_down_by(delta_y = DEFAULT_SCROLL)
|
30
|
+
scroll_by(NULL_SCROLL, delta_y)
|
31
|
+
end
|
32
|
+
|
33
|
+
# @param delta_x [Integer] Number of pixels.
|
34
|
+
# @return [self]
|
35
|
+
def scroll_right_by(delta_x = DEFAULT_SCROLL)
|
36
|
+
scroll_by(delta_x, NULL_SCROLL)
|
37
|
+
end
|
38
|
+
|
39
|
+
# @param delta_y [Integer] Number of pixels.
|
40
|
+
# @return [self]
|
41
|
+
def scroll_up_by(delta_y = DEFAULT_SCROLL)
|
42
|
+
scroll_down_by(-delta_y)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -17,11 +17,13 @@ module Aranha
|
|
17
17
|
WAIT_DEFAULT_TIMEOUT
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
# @param find_element_args [Array] Argujments for +Selenium::WebDriver::Find.find_element+.
|
21
|
+
# @param timeout [Integer]
|
22
|
+
# @return [Selenium::WebDriver::Element]
|
23
|
+
# @deprecated Use +element.wait_click+ instead.
|
24
|
+
def wait_for_click(find_element_args, timeout = nil, &block)
|
25
|
+
find_element_args = [find_element_args] if find_element_args.is_a?(::Hash)
|
26
|
+
element(*find_element_args).wait_click(timeout, &block)
|
25
27
|
end
|
26
28
|
|
27
29
|
def wait_for_element(find_element_args)
|
@@ -32,15 +32,9 @@ module Aranha
|
|
32
32
|
@downloads ||= ::Aranha::Selenium::Session::Downloads.new
|
33
33
|
end
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
element.click
|
39
|
-
element
|
40
|
-
rescue ::Selenium::WebDriver::Error::ElementClickInterceptedError,
|
41
|
-
::Selenium::WebDriver::Error::ElementNotInteractableError,
|
42
|
-
::Selenium::WebDriver::Error::StaleElementReferenceError
|
43
|
-
nil
|
35
|
+
# @return [Aranha::Selenium::Session::Element]
|
36
|
+
def element(*find_args)
|
37
|
+
::Aranha::Selenium::Session::Element.new(self, find_args)
|
44
38
|
end
|
45
39
|
end
|
46
40
|
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.
|
4
|
+
version: 0.11.1
|
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: 2024-
|
11
|
+
date: 2024-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eac_fs
|
@@ -30,34 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.122'
|
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.122'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: eac_templates
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: 0.5.1
|
47
|
+
version: '0.7'
|
51
48
|
type: :runtime
|
52
49
|
prerelease: false
|
53
50
|
version_requirements: !ruby/object:Gem::Requirement
|
54
51
|
requirements:
|
55
52
|
- - "~>"
|
56
53
|
- !ruby/object:Gem::Version
|
57
|
-
version: '0.
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 0.5.1
|
54
|
+
version: '0.7'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: selenium-webdriver
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,9 +118,11 @@ files:
|
|
124
118
|
- lib/aranha/selenium/executables.rb
|
125
119
|
- lib/aranha/selenium/session.rb
|
126
120
|
- lib/aranha/selenium/session/downloads.rb
|
121
|
+
- lib/aranha/selenium/session/element.rb
|
127
122
|
- lib/aranha/selenium/session/find.rb
|
128
123
|
- lib/aranha/selenium/session/form_request.rb
|
129
124
|
- lib/aranha/selenium/session/form_request/field.rb
|
125
|
+
- lib/aranha/selenium/session/scroll.rb
|
130
126
|
- lib/aranha/selenium/session/select.rb
|
131
127
|
- lib/aranha/selenium/session/wait.rb
|
132
128
|
- lib/aranha/selenium/version.rb
|