selenium_webdriver_helper 0.2.0 → 0.3.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: 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