aranha-selenium 0.10.1 → 0.11.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: fb4d2b748fa3b35c426bf0c2d995695698c6ec888176066d00a7700e14174407
4
- data.tar.gz: 83a4000089a929c22514fd187b7d7df52dd6a4bda4f9b3ad7fb732f35ddef5bc
3
+ metadata.gz: ce5a9d59bf8990f5766143c7b925f1d2905e927e851201d54ab14b7dbae5d398
4
+ data.tar.gz: 7f0f04da28cc91b37896e8428ac160fa522f21395cabf910c827ada7b05638d2
5
5
  SHA512:
6
- metadata.gz: 5c5f1548caad4cd51106223d9bca607212030ff32136bc4ccbf09677d384e824dcb784a0542841851125e1270fc084b2bc77ea3766a42213bc04ab2ff55f20d4
7
- data.tar.gz: d99132bee7528f16bbb73dbf6bfd95d827487c228a35e5b7f3c82fef3fe9907a3891eba9ea86e4824b5ad1f43176d5f7a6f647f345e0775100aeefa53f00903f
6
+ metadata.gz: c62c13201270a5627a8a567742f0f359b1ff3b44bf7b25b4d603b8dfdc6c363d314c8cd6f1a0a0ae3e5242d2462b2383a0bf2fabe6f614ed36deaeb2210f63a1
7
+ data.tar.gz: 51884da61169b7e5b5d52bbb6df2322b7cfccc0c78c6f060e845700bfa5449edabfc2146bd44aea0b3194219131c103e0858bfc61ff713ff4f4bface95bbb53b
@@ -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
 
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]
16
20
  def find_or_not_element(find_element_args)
17
- r = find_elements(find_element_args)
18
- r.any? ? r.first : nil
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,11 @@ 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
+ def wait_for_click(find_element_args, timeout = nil, &block)
24
+ element(*find_element_args).wait_for_click(timeout, &block).find!
25
25
  end
26
26
 
27
27
  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.0'
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.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: 2024-04-21 00:00:00.000000000 Z
11
+ date: 2024-06-09 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