onlyoffice_webdriver_wrapper 1.8.1 → 1.10.1

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.
Files changed (21) hide show
  1. checksums.yaml +4 -4
  2. data/lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/{chromedriver_linux_101 → chromedriver_linux_104} +0 -0
  3. data/lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_mac +0 -0
  4. data/lib/onlyoffice_webdriver_wrapper/helpers/firefox_helper.rb +4 -1
  5. data/lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/headless_patch.rb +1 -1
  6. data/lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb +1 -1
  7. data/lib/onlyoffice_webdriver_wrapper/version.rb +1 -1
  8. data/lib/onlyoffice_webdriver_wrapper/webdriver/click_methods.rb +5 -3
  9. data/lib/onlyoffice_webdriver_wrapper/webdriver/element_getters.rb +46 -0
  10. data/lib/onlyoffice_webdriver_wrapper/webdriver/get_text_methods.rb +48 -0
  11. data/lib/onlyoffice_webdriver_wrapper/webdriver/select_list_methods.rb +52 -0
  12. data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_attributes_helper.rb +1 -1
  13. data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_exceptions.rb +2 -0
  14. data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_frame_methods.rb +2 -2
  15. data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_js_methods.rb +2 -11
  16. data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_navigation_methods.rb +7 -3
  17. data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_screenshot_helper.rb +5 -4
  18. data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_tab_helper.rb +6 -1
  19. data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_type_helper.rb +12 -4
  20. data/lib/onlyoffice_webdriver_wrapper/webdriver.rb +15 -126
  21. metadata +15 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 776391f3667781696f5c73f6b3839fa17ed3965deaaaa53e4c0717b4915f2ced
4
- data.tar.gz: 5d9c932257c2e35e99464657ac3c00f8069a90d40bfc7ffc0d1e1c599ab3aee2
3
+ metadata.gz: 38bd65e16f39df65c2513cf77d215d9df3e35511260a505f894b524cac93f7fa
4
+ data.tar.gz: 4ae69daf079c905eef591f76376feea072eb13e500ef257b0d07f1b696f0ef8f
5
5
  SHA512:
6
- metadata.gz: 15a1d5affae01a3e6857ec9b7b592e89f9007e841f7a4d9c83043c1fc020b1086f6d9b59594f94239a47469d727db095d83187a3e2f9e25fd2caba632d958dbc
7
- data.tar.gz: d313861c4bda34d5452b95e9caaf29a53c13899f53d16fb95d699c98ead637311ff28b67b8533a7718f746c6eeb576f078a8dd6df211f48f6f88d62a97288326
6
+ metadata.gz: fbd8f193fdb5e43da1ef26d14572d3f915d9152098c51673d141fa86236af37f5a547d0fa9a001d5a638a0a96fd72773b9616ac58a86802c3ef148de05d12bbd
7
+ data.tar.gz: ea78ca635fdb7c87397962a2aa727295d9dfc37798bd5deaad338b463967fb95bbd3e83d5b4cd190062823fb52499ecf2795ca42f9891c9b2d393ebc566f8e89
@@ -21,7 +21,10 @@ module OnlyofficeWebdriverWrapper
21
21
  caps = Selenium::WebDriver::Remote::Capabilities.firefox
22
22
  caps[:proxy] = Selenium::WebDriver::Proxy.new(ssl: "#{@proxy.proxy_address}:#{@proxy.proxy_port}") if @proxy
23
23
  driver = Selenium::WebDriver.for :firefox, service: firefox_service, capabilities: [caps, options]
24
- driver.manage.window.size = Selenium::WebDriver::Dimension.new(headless.resolution_x, headless.resolution_y) if headless.running?
24
+ if headless.running?
25
+ driver.manage.window.size = Selenium::WebDriver::Dimension.new(headless.resolution_x,
26
+ headless.resolution_y)
27
+ end
25
28
  driver
26
29
  end
27
30
 
@@ -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
@@ -54,7 +54,7 @@ module OnlyofficeWebdriverWrapper
54
54
  destroy_at_exit: true,
55
55
  dimensions: "#{@resolution_x + 1}x#{@resolution_y + 1}x24",
56
56
  video: { provider: :ffmpeg })
57
- rescue Exception => e
57
+ rescue StandardError => e
58
58
  OnlyofficeLoggerHelper.log("xvfb not started with problem #{e}")
59
59
  WebDriver.clean_up(true)
60
60
  @headless_instance = Headless.new(reuse: false,
@@ -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.10.1'
8
8
  end
9
9
  end
@@ -24,8 +24,10 @@ module OnlyofficeWebdriverWrapper
24
24
  begin
25
25
  count.times { element.click }
26
26
  rescue Selenium::WebDriver::Error::ElementNotInteractableError => e
27
- webdriver_error(e.class, "Selenium::WebDriver::Error::ElementNotInteractableError: element not visible for xpath: #{xpath_name}")
28
- rescue Exception => e
27
+ webdriver_error(e.class,
28
+ 'Selenium::WebDriver::Error::ElementNotInteractableError: ' \
29
+ "element not visible for xpath: #{xpath_name}")
30
+ rescue StandardError => e
29
31
  webdriver_error(e.class, "UnknownError #{e.message} #{xpath_name}")
30
32
  end
31
33
  end
@@ -38,7 +40,7 @@ module OnlyofficeWebdriverWrapper
38
40
  element = get_element_by_display(xpath_name)
39
41
  begin
40
42
  element.is_a?(Array) ? element.first.click : element.click
41
- rescue Exception => e
43
+ rescue StandardError => e
42
44
  webdriver_error(e.class, "Exception #{e} in click_on_displayed(#{xpath_name})")
43
45
  end
44
46
  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,48 @@
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 do |element|
44
+ element.text unless element.text == ''
45
+ end
46
+ end
47
+ end
48
+ 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
@@ -12,7 +12,7 @@ module OnlyofficeWebdriverWrapper
12
12
  begin
13
13
  attribute_value = element.attribute(attribute)
14
14
  exist = !(attribute_value.empty? || attribute_value.nil?)
15
- rescue Exception
15
+ rescue StandardError
16
16
  exist = false
17
17
  end
18
18
  exist
@@ -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
@@ -13,7 +13,7 @@ module OnlyofficeWebdriverWrapper
13
13
  @driver.switch_to.frame frame
14
14
  rescue Selenium::WebDriver::Error::NoSuchElementError
15
15
  OnlyofficeLoggerHelper.log('Raise NoSuchElementError in the select_frame method')
16
- rescue Exception => e
16
+ rescue StandardError => e
17
17
  webdriver_error("Raise unknown exception: #{e}")
18
18
  end
19
19
  end
@@ -24,7 +24,7 @@ module OnlyofficeWebdriverWrapper
24
24
  @driver.switch_to.default_content
25
25
  rescue Timeout::Error
26
26
  OnlyofficeLoggerHelper.log('Raise TimeoutError in the select_top_frame method')
27
- rescue Exception => e
27
+ rescue StandardError => e
28
28
  raise "Browser is crushed or hangup with error: #{e}"
29
29
  end
30
30
  end
@@ -18,7 +18,7 @@ module OnlyofficeWebdriverWrapper
18
18
  # in that case performing `webdriver_error` only cause forever loop
19
19
  # since webdriver_error trying to get_url or make screenshots
20
20
  raise(e.class, "Timeout Error #{e} happened while executing #{script}")
21
- rescue Exception => e
21
+ rescue StandardError => e
22
22
  webdriver_error(e, "Exception #{e} in execute_javascript: #{script}")
23
23
  end
24
24
 
@@ -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
@@ -93,7 +84,7 @@ module OnlyofficeWebdriverWrapper
93
84
  # @param property [String] property to get
94
85
  # @return [String] value of property
95
86
  def computed_style(xpath, pseudo_element = 'null', property = nil)
96
- element_by_xpath = "document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext()"
87
+ element_by_xpath = dom_element_by_xpath(xpath)
97
88
  style = "window.getComputedStyle(#{element_by_xpath}, '#{pseudo_element}')"
98
89
  full_command = "#{style}.getPropertyValue('#{property}')"
99
90
  result = execute_javascript("return #{full_command}")
@@ -20,12 +20,16 @@ module OnlyofficeWebdriverWrapper
20
20
 
21
21
  # @return [String] url of current frame, or browser url if
22
22
  # it is a root frame
23
- def get_url
23
+ def current_url
24
24
  execute_javascript('return window.location.href')
25
25
  rescue Selenium::WebDriver::Error::NoSuchFrameError, Timeout::Error => e
26
26
  raise(e.class, "Browser is crushed or hangup with #{e}")
27
27
  end
28
28
 
29
+ alias get_url current_url
30
+ extend Gem::Deprecate
31
+ deprecate :get_url, 'current_url', 2069, 1
32
+
29
33
  # Refresh current page
30
34
  # @return [nil]
31
35
  def refresh
@@ -48,11 +52,11 @@ module OnlyofficeWebdriverWrapper
48
52
  begin
49
53
  @driver.execute_script('window.onbeforeunload = null') # off popup window
50
54
  rescue StandardError
51
- Exception
55
+ StandardError
52
56
  end
53
57
  begin
54
58
  @driver.quit
55
- rescue Exception => e
59
+ rescue StandardError => e
56
60
  OnlyofficeLoggerHelper.log("Some error happened on webdriver.quit #{e.backtrace}")
57
61
  end
58
62
  alert_confirm
@@ -22,7 +22,8 @@ module OnlyofficeWebdriverWrapper
22
22
  # Get screenshot of current windows and upload it to cloud storage
23
23
  # @param [String] path_to_screenshot place to store local screenshot
24
24
  # @return [String] url of public screenshot
25
- def get_screenshot_and_upload(path_to_screenshot = "#{screenshot_folder}/#{StringHelper.generate_random_string}.png")
25
+ def get_screenshot_and_upload(path_to_screenshot = nil)
26
+ path_to_screenshot ||= "#{screenshot_folder}/#{StringHelper.generate_random_string}.png"
26
27
  begin
27
28
  get_screenshot(path_to_screenshot)
28
29
  cloud_screenshot = publish_screenshot(path_to_screenshot)
@@ -57,20 +58,20 @@ module OnlyofficeWebdriverWrapper
57
58
  def webdriver_screenshot(screenshot_name = SecureRandom.uuid)
58
59
  begin
59
60
  link = get_screenshot_and_upload("#{screenshot_folder}/#{screenshot_name}.png")
60
- rescue Exception => e
61
+ rescue StandardError => e
61
62
  OnlyofficeLoggerHelper.log("Error in get screenshot: #{e}. Trying to get headless screenshot")
62
63
  if @headless.headless_instance.nil?
63
64
  system_screenshot("/tmp/#{screenshot_name}.png")
64
65
  begin
65
66
  link = publish_screenshot("/tmp/#{screenshot_name}.png")
66
- rescue Exception => e
67
+ rescue StandardError => e
67
68
  OnlyofficeLoggerHelper.log("Error in get screenshot: #{e}. System screenshot #{link}")
68
69
  end
69
70
  else
70
71
  @headless.take_screenshot("/tmp/#{screenshot_name}.png")
71
72
  begin
72
73
  link = publish_screenshot("/tmp/#{screenshot_name}.png")
73
- rescue Exception => e
74
+ rescue StandardError => e
74
75
  OnlyofficeLoggerHelper.log("Error in get screenshot: #{e}. Headless screenshot #{link}")
75
76
  end
76
77
  end
@@ -85,8 +85,13 @@ module OnlyofficeWebdriverWrapper
85
85
  end
86
86
 
87
87
  # @return [String] title of current tab
88
- def get_title_of_current_tab
88
+ def title_of_current_tab
89
89
  @driver.title
90
90
  end
91
+
92
+ alias get_title_of_current_tab title_of_current_tab
93
+
94
+ extend Gem::Deprecate
95
+ deprecate :get_title_of_current_tab, 'title_of_current_tab', 2069, 1
91
96
  end
92
97
  end
@@ -32,12 +32,17 @@ module OnlyofficeWebdriverWrapper
32
32
  # @param [Boolean] by_action type by `@driver.action` if true
33
33
  # @param [Boolean] by_element_send_key use `element.send_keys` if true
34
34
  # @return [void]
35
- def type_to_locator(xpath_name, text_to_send, clear_content = true, click_on_it = false, by_action = false, by_element_send_key = false)
35
+ def type_to_locator(xpath_name,
36
+ text_to_send,
37
+ clear_content = true,
38
+ click_on_it = false,
39
+ by_action = false,
40
+ by_element_send_key = false)
36
41
  element = get_element(xpath_name)
37
42
  if clear_content
38
43
  begin
39
44
  element.clear
40
- rescue Exception => e
45
+ rescue StandardError => e
41
46
  webdriver_error(e.class, "Error in element.clear #{e} for " \
42
47
  "type_to_locator(#{xpath_name}, #{text_to_send}, " \
43
48
  "#{clear_content}, #{click_on_it}, " \
@@ -81,8 +86,11 @@ module OnlyofficeWebdriverWrapper
81
86
  if click_on_it
82
87
  begin
83
88
  element.click
84
- rescue Exception => e
85
- webdriver_error(e.class, "type_to_input(#{xpath_name}, #{text_to_send}, #{clear_content}, #{click_on_it}) error in 'element.click' error: #{e}")
89
+ rescue StandardError => e
90
+ webdriver_error(e.class,
91
+ "type_to_input(#{xpath_name}, #{text_to_send}, " \
92
+ "#{clear_content}, #{click_on_it}) " \
93
+ "error in 'element.click' error: #{e}")
86
94
  end
87
95
  sleep 0.2
88
96
  end
@@ -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,68 +96,12 @@ 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
153
102
  # @return [void]
154
103
  def scroll_list_by_pixels(list_xpath, pixels)
155
- execute_javascript("$(document.evaluate(\"#{list_xpath.tr('"', "'")}\", document, null, XPathResult.ANY_TYPE, null).iterateNext()).scrollTop(#{pixels})")
104
+ execute_javascript("$(#{dom_element_by_xpath(list_xpath)}).scrollTop(#{pixels})")
156
105
  end
157
106
 
158
107
  # Open dropdown selector, like 'Color Selector', which has no element id
@@ -199,21 +148,10 @@ module OnlyofficeWebdriverWrapper
199
148
  @driver.find_element(:xpath, xpath_name)
200
149
  true
201
150
  end
202
- rescue Exception
151
+ rescue StandardError
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
@@ -256,7 +178,7 @@ module OnlyofficeWebdriverWrapper
256
178
 
257
179
  begin
258
180
  visible = element.displayed?
259
- rescue Exception => e
181
+ rescue StandardError => e
260
182
  OnlyofficeLoggerHelper.log("Element #{xpath_name} is not visible because of: #{e.message}")
261
183
  visible = false
262
184
  end
@@ -274,54 +196,21 @@ module OnlyofficeWebdriverWrapper
274
196
  return true if current_element.displayed?
275
197
  end
276
198
  false
277
- rescue Exception => e
199
+ rescue StandardError => e
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
- def get_page_source
205
+ def page_source
322
206
  @driver.execute_script('return document.documentElement.innerHTML;')
323
207
  end
324
208
 
209
+ alias get_page_source page_source
210
+
211
+ extend Gem::Deprecate
212
+ deprecate :get_page_source, 'page_source', 2069, 1
213
+
325
214
  # Raise an error, making a screenshot before it
326
215
  # @param [String, Object] exception class to raise
327
216
  # @param [String] error_message to raise
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.10.1
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-10 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: headless
@@ -31,16 +31,16 @@ dependencies:
31
31
  name: onlyoffice_file_helper
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - "~>"
34
+ - - "<"
35
35
  - !ruby/object:Gem::Version
36
- version: '0'
36
+ version: '2'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - "~>"
41
+ - - "<"
42
42
  - !ruby/object:Gem::Version
43
- version: '0'
43
+ version: '2'
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: onlyoffice_logger_helper
46
46
  requirement: !ruby/object:Gem::Requirement
@@ -59,9 +59,9 @@ dependencies:
59
59
  name: onlyoffice_s3_wrapper
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - "~>"
62
+ - - "<"
63
63
  - !ruby/object:Gem::Version
64
- version: '0'
64
+ version: '2'
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: 0.5.0
@@ -69,9 +69,9 @@ dependencies:
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - "<"
73
73
  - !ruby/object:Gem::Version
74
- version: '0'
74
+ version: '2'
75
75
  - - ">="
76
76
  - !ruby/object:Gem::Version
77
77
  version: 0.5.0
@@ -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.20
336
339
  signing_key:
337
340
  specification_version: 4
338
341
  summary: ONLYOFFICE Webdriver Wrapper Gem