aranha-selenium 0.4.2 → 0.5.0

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: b47d04d2522cd3c057f72c318c546bbc58e1c43ea7f09008f7e1f8a496951b60
4
- data.tar.gz: 58212effa6d0e6a2d0dd87fa97ea2862865d953c481d6b2dc8541af494a347f0
3
+ metadata.gz: b77cef3090b92e53523e8b58ca223c3f3d507d3f389fcb93b5ea14293761ffa4
4
+ data.tar.gz: f7c4ad1976d059fda2b14ea3634575ca1e8a3c32233f00f51bfe0727865a4a0d
5
5
  SHA512:
6
- metadata.gz: a477eead3f991fb2d1085805ecb207a06d067d7a31c68c2243908ab60fb0c043edd185a1e88f2f7bf0b416f7ee9e2996a4e783275eceebf9fe5e39c453a7405d
7
- data.tar.gz: 90848d780baee798fae498fe2d2672eb8e5e3be52aa4323363785ac59c06007baac9a2b9048821675588f62cf8ee635d8f7cb6f5cd384ef0e28d9d5945565ba4
6
+ metadata.gz: 68e0c97869bfdf83a45fbcdc3d04eda5987148b85954657289e8ab40f8025f5fb508e22baef3ef4475fe9037d39c6ded8462dbc6d139d79daac0e1ca0d7ad5c7
7
+ data.tar.gz: 987ab2d37efc2c98701485c36b03393640185e8a89fa804a510a4671a1d651ce3dc62fa9f9247deaa9aecd23e65b29e8514ec829a665da40d731679cbf553691
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tmpdir'
4
+
5
+ module Aranha
6
+ module Selenium
7
+ class Session < ::SimpleDelegator
8
+ class Downloads
9
+ attr_reader :dir
10
+
11
+ def initialize
12
+ @dir = ::Dir.mktmpdir
13
+ end
14
+
15
+ def current
16
+ Dir.glob("#{dir}/**/*")
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aranha
4
+ module Selenium
5
+ class Session < ::SimpleDelegator
6
+ module Find
7
+ # @return [Selenium::WebDriver::Element, nil]
8
+ def find_element(*args, &block)
9
+ return args.first if args.count >= 1 && args.first.is_a?(::Selenium::WebDriver::Element)
10
+
11
+ __getobj__.find_element(*args, &block)
12
+ end
13
+
14
+ def find_or_not_element(find_element_args)
15
+ r = find_elements(find_element_args)
16
+ r.any? ? r.first : nil
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aranha
4
+ module Selenium
5
+ class Session < ::SimpleDelegator
6
+ module Select
7
+ def select_option(field, value, *find_element_args)
8
+ select = find_element(*find_element_args)
9
+ option = ::Selenium::WebDriver::Support::Select.new(select)
10
+ option.select_by(field, value)
11
+ end
12
+
13
+ def select_option_by_text(text, *find_element_args)
14
+ select_option(:text, text, *find_element_args)
15
+ end
16
+
17
+ def select_option_by_value(value, *find_element_args)
18
+ select_option(:value, value, *find_element_args)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aranha
4
+ module Selenium
5
+ class Session < ::SimpleDelegator
6
+ module Wait
7
+ WAIT_DEFAULT_TIMEOUT = 15
8
+
9
+ def wait(timeout = nil)
10
+ timeout ||= wait_default_timeout
11
+ ::Selenium::WebDriver::Wait.new(timeout: timeout)
12
+ end
13
+
14
+ def wait_default_timeout
15
+ WAIT_DEFAULT_TIMEOUT
16
+ end
17
+
18
+ def wait_for_click(find_element_args)
19
+ wait.until do
20
+ element = find_element(find_element_args)
21
+ element ? element_click(element) : nil
22
+ end
23
+ end
24
+
25
+ def wait_for_element(find_element_args)
26
+ wait.until { find_element(find_element_args) }
27
+ end
28
+
29
+ def wait_for_download
30
+ initial_downloads = downloads.current
31
+ yield
32
+ new_downloads = []
33
+ wait.until do
34
+ new_downloads = downloads.current - initial_downloads
35
+ new_downloads.any?
36
+ end
37
+ new_downloads.first
38
+ end
39
+
40
+ def wait_for_url_change(&block)
41
+ previous_url = current_url
42
+ block&.call
43
+
44
+ wait.until { current_url != previous_url }
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,15 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'aranha/selenium/driver_factory'
4
+ require 'eac_ruby_utils/core_ext'
4
5
 
5
6
  module Aranha
6
7
  module Selenium
7
8
  class Session < ::SimpleDelegator
8
- attr_reader :downloads, :wait
9
+ require_sub __FILE__, include_modules: true
10
+ enable_simple_cache
11
+ attr_reader :downloads
9
12
 
10
13
  def initialize(options = {})
11
14
  @downloads = Downloads.new
12
- @wait = ::Selenium::WebDriver::Wait.new(timeout: 15)
13
15
  super(
14
16
  ::Aranha::Selenium::DriverFactory.create_driver(
15
17
  options.merge(download_dir: @downloads.dir)
@@ -17,61 +19,6 @@ module Aranha
17
19
  )
18
20
  end
19
21
 
20
- # @return [Selenium::WebDriver::Element, nil]
21
- def find_element(*args, &block)
22
- return args.first if args.count >= 1 && args.first.is_a?(::Selenium::WebDriver::Element)
23
-
24
- __getobj__.find_element(*args, &block)
25
- end
26
-
27
- def find_or_not_element(find_element_args)
28
- r = find_elements(find_element_args)
29
- r.any? ? r.first : nil
30
- end
31
-
32
- def select_option(field, value, *find_element_args)
33
- select = find_element(*find_element_args)
34
- option = ::Selenium::WebDriver::Support::Select.new(select)
35
- option.select_by(field, value)
36
- end
37
-
38
- def select_option_by_text(text, *find_element_args)
39
- select_option(:text, text, *find_element_args)
40
- end
41
-
42
- def select_option_by_value(value, *find_element_args)
43
- select_option(:value, value, *find_element_args)
44
- end
45
-
46
- def wait_for_click(find_element_args)
47
- wait.until do
48
- element = find_element(find_element_args)
49
- element ? element_click(element) : nil
50
- end
51
- end
52
-
53
- def wait_for_element(find_element_args)
54
- wait.until { find_element(find_element_args) }
55
- end
56
-
57
- def wait_for_download
58
- initial_downloads = downloads.current
59
- yield
60
- new_downloads = []
61
- wait.until do
62
- new_downloads = downloads.current - initial_downloads
63
- new_downloads.any?
64
- end
65
- new_downloads.first
66
- end
67
-
68
- def wait_for_url_change(&block)
69
- previous_url = current_url
70
- block&.call
71
-
72
- wait.until { current_url != previous_url }
73
- end
74
-
75
22
  def current_source
76
23
  element = find_element(xpath: '/html[1]')
77
24
  raise 'Root element not found' unless element
@@ -80,25 +27,14 @@ module Aranha
80
27
  "<html>\n#{s}\n</html>\n"
81
28
  end
82
29
 
83
- class Downloads
84
- attr_reader :dir
85
-
86
- def initialize
87
- @dir = ::Dir.mktmpdir
88
- end
89
-
90
- def current
91
- Dir.glob("#{dir}/**/*")
92
- end
93
- end
94
-
95
30
  private
96
31
 
97
32
  def element_click(element)
98
33
  element.click
99
34
  element
100
35
  rescue ::Selenium::WebDriver::Error::ElementClickInterceptedError,
101
- ::Selenium::WebDriver::Error::ElementNotInteractableError
36
+ ::Selenium::WebDriver::Error::ElementNotInteractableError,
37
+ ::Selenium::WebDriver::Error::StaleElementReferenceError
102
38
  nil
103
39
  end
104
40
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Aranha
4
4
  module Selenium
5
- VERSION = '0.4.2'
5
+ VERSION = '0.5.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.4.2
4
+ version: 0.5.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: 2022-09-04 00:00:00.000000000 Z
11
+ date: 2022-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_ruby_utils
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.102'
19
+ version: '0.106'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.102.1
22
+ version: 0.106.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '0.102'
29
+ version: '0.106'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.102.1
32
+ version: 0.106.1
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: selenium-webdriver
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +78,10 @@ files:
78
78
  - lib/aranha/selenium/driver_factory/firefox.rb
79
79
  - lib/aranha/selenium/driver_factory/firefox_auto_download_mime_types
80
80
  - lib/aranha/selenium/session.rb
81
+ - lib/aranha/selenium/session/downloads.rb
82
+ - lib/aranha/selenium/session/find.rb
83
+ - lib/aranha/selenium/session/select.rb
84
+ - lib/aranha/selenium/session/wait.rb
81
85
  - lib/aranha/selenium/version.rb
82
86
  homepage:
83
87
  licenses: []