aranha-selenium 0.4.2 → 0.5.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: 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: []