selenium_webdriver_helper 0.2.0 → 0.3.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: 7349efe2787f5c5a2234be89e0a933b9250a879b8b93eb9dba2de373a3c8a1b6
4
- data.tar.gz: 7ae2eaf291e8d58aa460b7ddc7099217c5a6fe5dddab0944b9624e0a27643c75
3
+ metadata.gz: d124968bcf54480e5dc80cc2e9c609b743e7777ba38e0638d28d264766ea2110
4
+ data.tar.gz: 3e2a846de538ccc648bc2128c2a966fe163aa86ee72829b745942192e8bf7a2c
5
5
  SHA512:
6
- metadata.gz: d1e0a0a2b688e941bc9867b2aad62d0c5f88316cb891217ff91093a90cea2ce114b1fd54b4c16f5a470626c1bd437f49d54bfef7b0653de3413c1e7c787f545e
7
- data.tar.gz: 77663ef3f73c5ed9ee489331aa94e28400ea051f84b7bc3b6a28e72503f2d61d95f07da3705d06addea6f69152f3b971dbf76ad65664c6e330f961e03628add3
6
+ metadata.gz: 60e09a27671c024c9c27fee727d3caddfaba6496247041017ae34d1066c122c33cec38b4732b079aba6207c928f341f1a8cf662924abdeb2d14722498cfa3e0d
7
+ data.tar.gz: dd62e3d4632a50fb3f17d2587da02d1c42c911f82b0490de9ec7501aab1ab5af325b19e666a161286a4267551caecaea6a85813e0f70631ade259f17de055f27
data/Gemfile CHANGED
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in selenium_webdriver_helper.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
9
- gem "rubocop", "~> 1.21"
10
- gem "selenium-webdriver"
8
+ gem 'logger'
9
+ gem 'rake', '~> 13.0'
10
+ gem 'rubocop', '~> 1.21'
11
+ gem 'selenium-webdriver'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SeleniumWebdriverHelper
4
- VERSION = "0.2.0"
4
+ VERSION = '0.3.0'
5
5
  end
@@ -22,8 +22,10 @@
22
22
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
23
  # THE SOFTWARE.
24
24
 
25
- require "selenium-webdriver"
26
- require_relative "selenium_webdriver_helper/version"
25
+ require 'selenium-webdriver'
26
+ require 'logger'
27
+ require_relative 'selenium_webdriver_helper/version'
28
+ require_relative 'selenium_webdriver_helper/constants'
27
29
 
28
30
  # below is the code to make life easier as it already has selenium webdriver methods defined
29
31
  module SeleniumWebdriverHelper
@@ -32,16 +34,19 @@ module SeleniumWebdriverHelper
32
34
 
33
35
  attr_accessor :driver
34
36
 
35
- def initialize(driver)
36
- @driver = driver
37
+ def log_info(message)
38
+ logger = Logger.new('selenium.log')
39
+ logger.info(message)
37
40
  end
38
41
 
39
- def block_execution(retry_count = 3, &block)
40
- block.call
41
- rescue Selenium::WebDriver::Error => e
42
- logger.info "#{e.message} \n #{e.backtrace}"
43
- retry_count -= 1
44
- retry if retry_count.positive?
42
+ def log_debug(message)
43
+ logger = Logger.new('selenium.log')
44
+ logger.debug(message)
45
+ end
46
+
47
+ def log_error(message)
48
+ logger = Logger.new('selenium.log')
49
+ logger.error(message)
45
50
  end
46
51
 
47
52
  def selectors_from_page_objects(page_object, value = nil)
@@ -57,41 +62,89 @@ module SeleniumWebdriverHelper
57
62
  output
58
63
  end
59
64
 
60
- def get_element(selector, custom_timeout: nil, driver2: nil)
65
+ def block_execution(retry_count = 3, &block)
66
+ block.call
67
+ rescue Selenium::WebDriver::Error => e
68
+ logger.info "#{e.message} \n #{e.backtrace}"
69
+ retry_count -= 1
70
+ retry if retry_count.positive?
71
+ end
72
+
73
+ def initialize_driver(driver, implicit_wait = LONGER_WAIT)
74
+ $driver = driver
75
+ $driver.manage.timeouts.implicit_wait = implicit_wait
76
+ $wait = Selenium::WebDriver::Wait.new(timeout: implicit_wait) # seconds
77
+ end
78
+
79
+ def execute_script(js, *args)
80
+ $driver.execute_script(js, *args)
81
+ rescue Selenium::WebDriver::Error::UnsupportedOperationError => e
82
+ log_error("[Exception] underlying webdriver instance does not support javascript #{e.message}")
83
+ end
84
+
85
+ def wait_for_page_load(custom_timeout = SHORTER_WAIT)
86
+ wait = Selenium::WebDriver::Wait.new(timeout: custom_timeout)
87
+ wait.until { execute_script('return document.readyState;') == 'complete' }
88
+ end
89
+
90
+ def get_url(url, driver = $driver)
91
+ driver.get(url)
92
+ wait_for_page_load
93
+ log_info("visited #{url}")
94
+ end
95
+
96
+ def maximize_window(driver = $driver)
97
+ driver.manage.window.maximize
98
+ log_info('window maximized')
99
+ end
100
+
101
+ def save_screenshot(path, driver = $driver)
102
+ driver.save_screenshot(path)
103
+ log_info("screenshot captured and saved at path #{path}")
104
+ end
105
+
106
+ def get_element(selector, custom_timeout = LONGER_WAIT, driver = $driver)
61
107
  how, what = selectors_from_page_objects(selector)
62
108
  block_execution(3) do
63
- wait = Selenium::WebDriver::Wait.new(timeout: (custom_timeout.nil? ? LONGER_WAIT : custom_timeout))
109
+ wait = Selenium::WebDriver::Wait.new(timeout: custom_timeout)
64
110
  begin
65
- wait.until { (driver2.nil? ? @driver : driver2).find_element(how, what).displayed? }
66
- (driver2.nil? ? @driver : driver2).find_element(how, what)
111
+ wait.until { driver.find_element(how, what).displayed? }
112
+ driver.find_element(how, what)
67
113
  rescue Selenium::WebDriver::Error::NoSuchElementError => e
68
114
  raise "Exception #{e.message} \n #{e.backtrace}"
69
115
  end
70
116
  end
71
117
  end
72
118
 
73
- def get_elements(selector, custom_timeout: nil, driver2: nil)
119
+ def get_elements(selector, custom_timeout: LONGER_WAIT, driver: $driver)
74
120
  how, what = selectors_from_page_objects(selector)
75
121
  block_execution(3) do
76
- wait = Selenium::WebDriver::Wait.new(timeout: (custom_timeout.nil? ? LONGER_WAIT : custom_timeout))
122
+ wait = Selenium::WebDriver::Wait.new(timeout: custom_timeout)
77
123
  begin
78
- wait.until { (driver2.nil? ? @driver : driver2).find_elements(how, what)[0].displayed? }
79
- (driver2.nil? ? @driver : driver2).find_elements(how, what)
124
+ wait.until { driver.find_elements(how, what)[0].displayed? }
125
+ driver.find_elements(how, what)
80
126
  rescue Selenium::WebDriver::Error::NoSuchElementError => e
81
127
  raise "Exception #{e.message} \n #{e.backtrace}"
82
128
  end
83
129
  end
84
130
  end
85
131
 
86
- def find_element_and_send_keys(selector, value)
132
+ def element_text(selector, custom_timeout = LONGER_WAIT, driver = $driver)
133
+ block_execution(3) do
134
+ get_element(selector, custom_timeout, driver).text
135
+ end
136
+ end
137
+
138
+ def find_element_and_send_keys(selector, value, driver = $driver)
87
139
  block_execution(3) do
88
140
  get_element(selector).send_keys(value)
89
141
  end
90
142
  end
91
143
 
92
- def wait_for_page_load
93
- wait = Selenium::WebDriver::Wait.new(LONG_WAIT)
94
- wait.until { execute_script("return document.readyState;") == "complete" }
144
+ def element_click(selector, custom_timeout = LONGER_WAIT, driver = $driver)
145
+ block_execution(3) do
146
+ get_element(selector, custom_timeout, driver).click
147
+ end
95
148
  end
96
149
 
97
150
  def visible_element(selector)
@@ -102,8 +155,8 @@ module SeleniumWebdriverHelper
102
155
  raise "No visible element found for selector - #{selector}"
103
156
  end
104
157
 
105
- def wait_for_element_visibility(selector_or_element, visibility: true, timeout: LONG_WAIT)
106
- wait = Selenium::WebDriver::Wait.new(timeout: timeout)
158
+ def wait_for_element_visibility(selector_or_element, visibility = true, custom_timeout = LONG_WAIT)
159
+ wait = Selenium::WebDriver::Wait.new(timeout: custom_timeout)
107
160
  if !(selector_or_element.is_a?(Array) || selector_or_element.is_a?(Hash))
108
161
  wait.until { selector_or_element.displayed? == visibility }
109
162
  else
@@ -111,40 +164,40 @@ module SeleniumWebdriverHelper
111
164
  end
112
165
  end
113
166
 
114
- def wait_for_element(selector, driver2: nil)
167
+ def wait_for_element(selector, driver = $driver)
115
168
  how, what = selectors_from_page_objects(selector)
116
169
  5.times do
117
- (driver2.nil? ? @driver : driver2).find_element(how, what)
170
+ driver.find_element(how, what)
118
171
  break
119
172
  rescue Selenium::WebDriver::Error::NoSuchElementError => e
120
173
  logger.info "[Exception] Retrying to find element due to exception #{e.message}"
121
174
  end
122
175
  end
123
176
 
124
- def get_child_element(parent_element, selector, custom_timeout: LONG_WAIT)
177
+ def get_child_element(parent_element, selector, custom_timeout = LONG_WAIT)
125
178
  how, what = selectors_from_page_objects(selector)
126
179
  block_execution(3) do
127
- wait = Selenium::WebDriver::Wait.new(timeout: (custom_timeout.nil? ? LONGER_WAIT : custom_timeout))
180
+ wait = Selenium::WebDriver::Wait.new(timeout: custom_timeout)
128
181
  wait.until { parent_element.find_element(how, what).displayed? }
129
182
  parent_element.find_element(how, what)
130
183
  end
131
184
  end
132
185
 
133
- def get_child_elements(parent_element, selector, custom_timeout: LONG_WAIT)
186
+ def get_child_elements(parent_element, selector, custom_timeout = LONG_WAIT)
134
187
  how, what = selectors_from_page_objects(selector)
135
188
  block_execution(3) do
136
- wait = Selenium::WebDriver::Wait.new(timeout: (custom_timeout.nil? ? LONGER_WAIT : custom_timeout))
189
+ wait = Selenium::WebDriver::Wait.new(timeout: custom_timeout)
137
190
  wait.until { parent_element.find_elements(how, what)[0].displayed? }
138
191
  parent_element.find_elements(how, what)
139
192
  end
140
193
  end
141
194
 
142
- def page_refresh(driver2: nil)
143
- (driver2.nil? ? @driver : driver2).navigate.refresh
195
+ def page_refresh(driver = $driver)
196
+ driver.navigate.refresh
144
197
  end
145
198
 
146
- def page_refresh_js(driver2: nil)
147
- (driver2.nil? ? @driver : driver2).execute_script("location.reload(true);")
199
+ def page_refresh_js
200
+ execute_script('location.reload(true);')
148
201
  end
149
202
 
150
203
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium_webdriver_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - amit-singh-bisht
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-15 00:00:00.000000000 Z
11
+ date: 2022-11-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Write a longer description or delete this line.
14
14
  email:
@@ -17,7 +17,6 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - ".rubocop.yml"
21
20
  - Gemfile
22
21
  - LICENSE.txt
23
22
  - README.md
@@ -25,7 +24,6 @@ files:
25
24
  - lib/selenium_webdriver_helper.rb
26
25
  - lib/selenium_webdriver_helper/constants.rb
27
26
  - lib/selenium_webdriver_helper/version.rb
28
- - sig/selenium_webdriver_helper.rbs
29
27
  homepage: https://github.com/amit-singh-bisht/selenium_webdriver_helper_ruby
30
28
  licenses:
31
29
  - MIT
data/.rubocop.yml DELETED
@@ -1,13 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 2.5
3
-
4
- Style/StringLiterals:
5
- Enabled: true
6
- EnforcedStyle: double_quotes
7
-
8
- Style/StringLiteralsInInterpolation:
9
- Enabled: true
10
- EnforcedStyle: double_quotes
11
-
12
- Layout/LineLength:
13
- Max: 120
@@ -1,4 +0,0 @@
1
- module SeleniumWebdriverHelper
2
- VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
- end