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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb4d2b748fa3b35c426bf0c2d995695698c6ec888176066d00a7700e14174407
4
- data.tar.gz: 83a4000089a929c22514fd187b7d7df52dd6a4bda4f9b3ad7fb732f35ddef5bc
3
+ metadata.gz: 0b17f755bf67c8814c6c608817a23ddd0fc2528c6806da5e1ee72b9929d197ce
4
+ data.tar.gz: 93ac73e352f1759b467c7161511a02b47347052e3275a73518ffb8b20cb07c1b
5
5
  SHA512:
6
- metadata.gz: 5c5f1548caad4cd51106223d9bca607212030ff32136bc4ccbf09677d384e824dcb784a0542841851125e1270fc084b2bc77ea3766a42213bc04ab2ff55f20d4
7
- data.tar.gz: d99132bee7528f16bbb73dbf6bfd95d827487c228a35e5b7f3c82fef3fe9907a3891eba9ea86e4824b5ad1f43176d5f7a6f647f345e0775100aeefa53f00903f
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
- # @return [Selenium::WebDriver::Element, nil]
10
- def find_element(*args, &block)
11
- return args.first if args.count >= 1 && args.first.is_a?(::Selenium::WebDriver::Element)
12
-
13
- __getobj__.find_element(*args, &block)
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
- def find_or_not_element(find_element_args)
17
- r = find_elements(find_element_args)
18
- r.any? ? r.first : nil
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
- def wait_for_click(find_element_args, timeout = nil)
21
- wait(timeout).until do
22
- element = find_element(find_element_args)
23
- element ? element_click(element) : nil
24
- end
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
- private
36
-
37
- def element_click(element)
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Aranha
4
4
  module Selenium
5
- VERSION = '0.10.1'
5
+ VERSION = '0.11.1'
6
6
  end
7
7
  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.10.1
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-04-21 00:00:00.000000000 Z
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.121'
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.121'
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.5'
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.5'
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