onlyoffice_webdriver_wrapper 1.8.1 → 1.9.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: 776391f3667781696f5c73f6b3839fa17ed3965deaaaa53e4c0717b4915f2ced
4
- data.tar.gz: 5d9c932257c2e35e99464657ac3c00f8069a90d40bfc7ffc0d1e1c599ab3aee2
3
+ metadata.gz: fdfe224abc7b1f2c7e69e8830ec5cc388d3b8fa165a969f8860a832e1ab51319
4
+ data.tar.gz: cf61e06fce72afbb30398cdd62693544107059701316698705da602231eb7d9a
5
5
  SHA512:
6
- metadata.gz: 15a1d5affae01a3e6857ec9b7b592e89f9007e841f7a4d9c83043c1fc020b1086f6d9b59594f94239a47469d727db095d83187a3e2f9e25fd2caba632d958dbc
7
- data.tar.gz: d313861c4bda34d5452b95e9caaf29a53c13899f53d16fb95d699c98ead637311ff28b67b8533a7718f746c6eeb576f078a8dd6df211f48f6f88d62a97288326
6
+ metadata.gz: '061282552a87103e53e3d94f4ce3be7d8a811378ad6d64c1620089b7f259ce231c8d7de931d8a60c83a7b601c31f599b7ccf3e92a4d86ae22efae2f5d8f5b6c6'
7
+ data.tar.gz: 7d0d8e1528f07f2a8bca61a972acf872075870ffd2dba37b088e9969c4b2f8d9ed91baee62df2a2b732930a77c9e0b0760541b743496d333cdc464c61ce08d5e
@@ -29,7 +29,7 @@ class Headless
29
29
  class VideoRecorder
30
30
  # Stop recording and save it
31
31
  # @param [String] path to save
32
- # @retunr [nil, String] path to result file or nil if error
32
+ # @return [nil, String] path to result file or nil if error
33
33
  def stop_and_save(path)
34
34
  CliUtil.kill_process(@pid_file_path, :wait => true)
35
35
  if File.exist? @tmp_file_path
@@ -4,6 +4,6 @@ module OnlyofficeWebdriverWrapper
4
4
  # Module for storing version data
5
5
  module Version
6
6
  # @return [String] Current stable version of gem
7
- STRING = '1.8.1'
7
+ STRING = '1.9.0'
8
8
  end
9
9
  end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeWebdriverWrapper
4
+ # Methods to get elements
5
+ module ClickMethods
6
+ # Get element by it's xpath
7
+ # @param [String] object_identification xpath of object to find
8
+ # @return [Object, nil] nil if nothing found
9
+ def get_element(object_identification)
10
+ return object_identification unless object_identification.is_a?(String)
11
+
12
+ @driver.find_element(:xpath, object_identification)
13
+ rescue StandardError
14
+ nil
15
+ end
16
+
17
+ # Get first visible element from several
18
+ # @param [String] xpath_name to find several objects
19
+ # @raise [Selenium::WebDriver::Error::InvalidSelectorError] if selector is invalid
20
+ # @return [Object] first visible element
21
+ def get_element_by_display(xpath_name)
22
+ @driver.find_elements(:xpath, xpath_name).each do |element|
23
+ return element if element.displayed?
24
+ end
25
+ rescue Selenium::WebDriver::Error::InvalidSelectorError
26
+ webdriver_error(Selenium::WebDriver::Error::InvalidSelectorError,
27
+ "Invalid Selector: get_element_by_display('#{xpath_name}')")
28
+ end
29
+
30
+ # Get array of webdriver object by xpath
31
+ # @param [String] objects_identification object to find
32
+ # @param [Boolean] only_visible return invisible if true
33
+ # @return [Array, Object] list of objects
34
+ def get_elements(objects_identification, only_visible = true)
35
+ return objects_identification if objects_identification.is_a?(Array)
36
+
37
+ elements = @driver.find_elements(:xpath, objects_identification)
38
+ if only_visible
39
+ elements.each do |current|
40
+ elements.delete(current) unless @browser == :firefox || current.displayed?
41
+ end
42
+ end
43
+ elements
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeWebdriverWrapper
4
+ # Method to get text
5
+ module GetTextMethods
6
+ # Get text of current element
7
+ # @param [String] xpath_name name of xpath
8
+ # @param [Boolean] wait_until_visible wait until element visible
9
+ # @return [String] result string
10
+ def get_text(xpath_name, wait_until_visible = true)
11
+ wait_until_element_visible(xpath_name) if wait_until_visible
12
+
13
+ element = get_element(xpath_name)
14
+ webdriver_error("get_text(#{xpath_name}, #{wait_until_visible}) not found element by xpath") if element.nil?
15
+ if element.tag_name == 'input' || element.tag_name == 'textarea'
16
+ element.attribute('value')
17
+ else
18
+ element.text
19
+ end
20
+ end
21
+
22
+ # Get text in object by xpath
23
+ # @param xpath [String] xpath to get text
24
+ # @return [String] text in xpath
25
+ def get_text_by_js(xpath)
26
+ text = execute_javascript("return #{dom_element_by_xpath(xpath)}.textContent")
27
+ text = execute_javascript("return #{dom_element_by_xpath(xpath)}.value") if text.empty?
28
+ text
29
+ end
30
+
31
+ # Get text from all elements with specified xpath
32
+ # @param array_elements [String] xpath of elements
33
+ # @return [Array<String>] values of elements
34
+ def get_text_array(array_elements)
35
+ get_elements(array_elements).map { |current_element| get_text(current_element) }
36
+ end
37
+
38
+ # Get text from several elements
39
+ # This method filter out all elements with empty text
40
+ # @param [String] xpath_several_elements to find objects
41
+ # @return [Array<String>] text of those elements
42
+ def get_text_of_several_elements(xpath_several_elements)
43
+ @driver.find_elements(:xpath, xpath_several_elements).filter_map { |element| element.text unless element.text == '' }
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeWebdriverWrapper
4
+ # Method to work with select list
5
+ module SelectListMethods
6
+ # Select from list elements
7
+ # @param [String] value value to find object
8
+ # @param [Array<PageObject::Elements::Element>] elements_value `elements` page object to select from
9
+ # @raise [SelectEntryNotFound] if value not found in select list
10
+ # @return [void]
11
+ def select_from_list_elements(value, elements_value)
12
+ index = get_element_index(value, elements_value)
13
+ webdriver_error(SelectEntryNotFound, "Select entry `#{value}` not found in #{elements_value}") if index.nil?
14
+
15
+ elements_value[index].click
16
+ end
17
+
18
+ # Get index of element by it's text
19
+ # @param [String] text to compare text
20
+ # @param [Array<PageObject::Elements::Element>] list_elements array with
21
+ # PageObject elements to find in
22
+ # @return [Integer, nil] nil if nothing found, index if found
23
+ def get_element_index(text, list_elements)
24
+ list_elements.each_with_index do |current, i|
25
+ return i if get_text(current) == text
26
+ end
27
+ nil
28
+ end
29
+
30
+ # Get all options for combobox or select
31
+ # @param [String] xpath_name to find element
32
+ # @return [Array<String>] values
33
+ def get_all_combo_box_values(xpath_name)
34
+ @driver.find_element(:xpath, xpath_name).find_elements(tag_name: 'option').map { |el| el.attribute('value') }
35
+ end
36
+
37
+ # Select value of combo box
38
+ # @param [String] xpath_name to find combobox
39
+ # @param [String] select_value to select
40
+ # @param [Symbol] select_by select type, can be `:value` or `:text`
41
+ # @return [void]
42
+ def select_combo_box(xpath_name, select_value, select_by = :value)
43
+ wait_until_element_visible(xpath_name)
44
+ option = Selenium::WebDriver::Support::Select.new(get_element(xpath_name))
45
+ begin
46
+ option.select_by(select_by, select_value)
47
+ rescue StandardError
48
+ option.select_by(:text, select_value)
49
+ end
50
+ end
51
+ end
52
+ end
@@ -3,4 +3,6 @@
3
3
  module OnlyofficeWebdriverWrapper
4
4
  # Exception class if system is not supported
5
5
  class WebdriverSystemNotSupported < StandardError; end
6
+ # If entry needed to be selected not found in select
7
+ class SelectEntryNotFound < StandardError; end
6
8
  end
@@ -40,15 +40,6 @@ module OnlyofficeWebdriverWrapper
40
40
  execute_javascript("#{dom_element_by_xpath(xpath)}.value=\"#{escaped_text}\";")
41
41
  end
42
42
 
43
- # Get text in object by xpath
44
- # @param xpath [String] xpath to get text
45
- # @return [String] text in xpath
46
- def get_text_by_js(xpath)
47
- text = execute_javascript("return #{dom_element_by_xpath(xpath)}.textContent")
48
- text = execute_javascript("return #{dom_element_by_xpath(xpath)}.value") if text.empty?
49
- text
50
- end
51
-
52
43
  # Calculate object size using Javascript
53
44
  # @param xpath [Sting] xpath of object
54
45
  # @return [Dimensions] size of element
@@ -8,6 +8,9 @@ require 'uri'
8
8
  require_relative 'helpers/chrome_helper'
9
9
  require_relative 'helpers/firefox_helper'
10
10
  require_relative 'webdriver/click_methods'
11
+ require_relative 'webdriver/element_getters'
12
+ require_relative 'webdriver/get_text_methods'
13
+ require_relative 'webdriver/select_list_methods'
11
14
  require_relative 'webdriver/wait_until_methods'
12
15
  require_relative 'webdriver/webdriver_alert_helper'
13
16
  require_relative 'webdriver/webdriver_attributes_helper'
@@ -31,6 +34,8 @@ module OnlyofficeWebdriverWrapper
31
34
  class WebDriver
32
35
  include ChromeHelper
33
36
  include ClickMethods
37
+ include GetTextMethods
38
+ include SelectListMethods
34
39
  include FirefoxHelper
35
40
  include RubyHelper
36
41
  include WaitUntilMethods
@@ -91,62 +96,6 @@ module OnlyofficeWebdriverWrapper
91
96
  @browser_running = true
92
97
  end
93
98
 
94
- # Get element by it's xpath
95
- # @param [String] object_identification xpath of object to find
96
- # @return [Object, nil] nil if nothing found
97
- def get_element(object_identification)
98
- return object_identification unless object_identification.is_a?(String)
99
-
100
- @driver.find_element(:xpath, object_identification)
101
- rescue StandardError
102
- nil
103
- end
104
-
105
- # Get text from all elements with specified xpath
106
- # @param array_elements [String] xpath of elements
107
- # @return [Array<String>] values of elements
108
- def get_text_array(array_elements)
109
- get_elements(array_elements).map { |current_element| get_text(current_element) }
110
- end
111
-
112
- # Select from list elements
113
- # @param [String] value value to find object
114
- # @param [Array<Object>] elements_value elements to check
115
- # @return [void]
116
- def select_from_list_elements(value, elements_value)
117
- index = get_element_index(value, elements_value)
118
- elements_value[index].click
119
- end
120
-
121
- # Get index of element by it's text
122
- # @param [String] text to compare text
123
- # @param [Array<PageObject::Elements::Element>] list_elements array with
124
- # PageObject elements to find in
125
- # @return [Integer, nil] nil if nothing found, index if found
126
- def get_element_index(text, list_elements)
127
- list_elements.each_with_index do |current, i|
128
- return i if get_text(current) == text
129
- end
130
- nil
131
- end
132
-
133
- # Get all options for combo box
134
- # @param [String] xpath_name to find combobox
135
- # @return [Array<String>] values
136
- def get_all_combo_box_values(xpath_name)
137
- @driver.find_element(:xpath, xpath_name).find_elements(tag_name: 'option').map { |el| el.attribute('value') }
138
- end
139
-
140
- # Scroll list to specific element
141
- # @param [String] list_xpath how to find this list
142
- # @param [String] element_xpath to which we should scrolled
143
- # @return [void]
144
- def scroll_list_to_element(list_xpath, element_xpath)
145
- execute_javascript("$(document.evaluate(\"#{list_xpath}\", document, null, XPathResult.ANY_TYPE, null).
146
- iterateNext()).jScrollPane().data('jsp').scrollToElement(document.evaluate(\"#{element_xpath}\",
147
- document, null, XPathResult.ANY_TYPE, null).iterateNext());")
148
- end
149
-
150
99
  # Scroll list by pixel count
151
100
  # @param [String] list_xpath how to detect this list
152
101
  # @param [Integer] pixels how much to scroll
@@ -203,17 +152,6 @@ module OnlyofficeWebdriverWrapper
203
152
  false
204
153
  end
205
154
 
206
- # Get first visible element from several
207
- # @param [String] xpath_name to find several objects
208
- # @return [Object] first visible element
209
- def get_element_by_display(xpath_name)
210
- @driver.find_elements(:xpath, xpath_name).each do |element|
211
- return element if element.displayed?
212
- end
213
- rescue Selenium::WebDriver::Error::InvalidSelectorError
214
- webdriver_error("get_element_by_display(#{xpath_name}): invalid selector: Unable to locate an element with the xpath expression")
215
- end
216
-
217
155
  # Return count of elements (visible and not visible)
218
156
  # @param xpath_name [String] xpath to find
219
157
  # @param only_visible [True, False] count only visible elements?
@@ -227,22 +165,6 @@ module OnlyofficeWebdriverWrapper
227
165
  end
228
166
  end
229
167
 
230
- # Get array of webdriver object by xpath
231
- # @param [String] objects_identification object to find
232
- # @param [Boolean] only_visible return invisible if true
233
- # @return [Array, Object] list of objects
234
- def get_elements(objects_identification, only_visible = true)
235
- return objects_identification if objects_identification.is_a?(Array)
236
-
237
- elements = @driver.find_elements(:xpath, objects_identification)
238
- if only_visible
239
- elements.each do |current|
240
- elements.delete(current) unless @browser == :firefox || current.displayed?
241
- end
242
- end
243
- elements
244
- end
245
-
246
168
  # Check if element visible on page
247
169
  # It should be part of DOM and should be visible on current visible part of page
248
170
  # @param [String] xpath_name element to find
@@ -278,44 +200,6 @@ module OnlyofficeWebdriverWrapper
278
200
  webdriver_error("Raise unknown exception: #{e}")
279
201
  end
280
202
 
281
- # Get text of current element
282
- # @param [String] xpath_name name of xpath
283
- # @param [Boolean] wait_until_visible wait until element visible
284
- # @return [String] result string
285
- def get_text(xpath_name, wait_until_visible = true)
286
- wait_until_element_visible(xpath_name) if wait_until_visible
287
-
288
- element = get_element(xpath_name)
289
- webdriver_error("get_text(#{xpath_name}, #{wait_until_visible}) not found element by xpath") if element.nil?
290
- if element.tag_name == 'input' || element.tag_name == 'textarea'
291
- element.attribute('value')
292
- else
293
- element.text
294
- end
295
- end
296
-
297
- # Get text from several elements
298
- # @param [String] xpath_several_elements to find objects
299
- # @return [Array<String>] text of those elements
300
- def get_text_of_several_elements(xpath_several_elements)
301
- @driver.find_elements(:xpath, xpath_several_elements).filter_map { |element| element.text unless element.text == '' }
302
- end
303
-
304
- # Select value of combo box
305
- # @param [String] xpath_name to find combobox
306
- # @param [String] select_value to select
307
- # @param [Symbol] select_by select type
308
- # @return [void]
309
- def select_combo_box(xpath_name, select_value, select_by = :value)
310
- wait_until_element_visible(xpath_name)
311
- option = Selenium::WebDriver::Support::Select.new(get_element(xpath_name))
312
- begin
313
- option.select_by(select_by, select_value)
314
- rescue StandardError
315
- option.select_by(:text, select_value)
316
- end
317
- end
318
-
319
203
  # Get page source
320
204
  # @return [String] all page source
321
205
  def get_page_source
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onlyoffice_webdriver_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ONLYOFFICE
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2022-07-08 00:00:00.000000000 Z
14
+ date: 2022-08-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: headless
@@ -275,9 +275,9 @@ files:
275
275
  - lib/onlyoffice_webdriver_wrapper/helpers/bin/geckodriver
276
276
  - lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper.rb
277
277
  - lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chrome_version_helper.rb
278
- - lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_linux_101
279
278
  - lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_linux_102
280
279
  - lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_linux_103
280
+ - lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_linux_104
281
281
  - lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_mac
282
282
  - lib/onlyoffice_webdriver_wrapper/helpers/firefox_helper.rb
283
283
  - lib/onlyoffice_webdriver_wrapper/helpers/firefox_helper/save_to_disk_files.list
@@ -291,6 +291,9 @@ files:
291
291
  - lib/onlyoffice_webdriver_wrapper/version.rb
292
292
  - lib/onlyoffice_webdriver_wrapper/webdriver.rb
293
293
  - lib/onlyoffice_webdriver_wrapper/webdriver/click_methods.rb
294
+ - lib/onlyoffice_webdriver_wrapper/webdriver/element_getters.rb
295
+ - lib/onlyoffice_webdriver_wrapper/webdriver/get_text_methods.rb
296
+ - lib/onlyoffice_webdriver_wrapper/webdriver/select_list_methods.rb
294
297
  - lib/onlyoffice_webdriver_wrapper/webdriver/wait_until_methods.rb
295
298
  - lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_alert_helper.rb
296
299
  - lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_attributes_helper.rb
@@ -332,7 +335,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
332
335
  - !ruby/object:Gem::Version
333
336
  version: '0'
334
337
  requirements: []
335
- rubygems_version: 3.3.17
338
+ rubygems_version: 3.3.19
336
339
  signing_key:
337
340
  specification_version: 4
338
341
  summary: ONLYOFFICE Webdriver Wrapper Gem