onlyoffice_webdriver_wrapper 0.3.2 → 0.5.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: 0044c9d5e8971a853777153b56dabc039847c52a6c5fc980cf8da9f569bd9a27
4
- data.tar.gz: 523f06a1503fca9cdcb64972f90801212aad5ad6f128992d047d866dd14b8c36
3
+ metadata.gz: 2132850b7105fa563d909e4c82575b19f525603fba19e23a241e743ab2ebf3ef
4
+ data.tar.gz: b9f5a3a4414ac4b4dc56567593f99c6c4f39ecc494cde8820c09c04e06e3fa1e
5
5
  SHA512:
6
- metadata.gz: 2904eb6b01834f659d2f438b9407935cfb9bae36c8c9b22d8cc4148a84dc7d2ed6478fe6924fa14cc96deb134dd5da7cecd7d2968a84a3d2a76d0cd05d7b422d
7
- data.tar.gz: 9908660e5563f7912d52c2770054d5577a2e219323a837aa63ed92314a9764660b02dae4082085785298e43e41455b181faad96c2fb0643e995b9a3b963d3f0f
6
+ metadata.gz: 48cb93139b5f22b4b1993240c6ba7297f886936844eced9f587547d4527083876d1d2065a4eafb34e4a05848fae1d1455e6f3cb3af204fb1c35b02e356b0f5b0
7
+ data.tar.gz: bb5e042cda619d6ce3714094ed6b50d4369cb8fabe229fdaf33132fc21dc0a094e36d5df49c57a52a8a74301e379f3e90940c9a12ac012098afa12be2cec6c57
@@ -37,7 +37,6 @@ module OnlyofficeWebdriverWrapper
37
37
  caps = Selenium::WebDriver::Remote::Capabilities.chrome
38
38
  caps[:logging_prefs] = { browser: 'ALL' }
39
39
  caps[:proxy] = Selenium::WebDriver::Proxy.new(ssl: "#{@proxy.proxy_address}:#{@proxy.proxy_port}") if @proxy
40
- caps['chromeOptions'] = { w3c: false }
41
40
  switches = add_useragent_to_switches(DEFAULT_CHROME_SWITCHES)
42
41
  options = Selenium::WebDriver::Chrome::Options.new(args: switches,
43
42
  prefs: prefs)
@@ -10,8 +10,11 @@ module OnlyofficeWebdriverWrapper
10
10
  class HeadlessHelper
11
11
  include RealDisplayTools
12
12
  include RubyHelper
13
+ # @return [Headless] instance of headless object
13
14
  attr_accessor :headless_instance
15
+ # @return [Integer] x resolution of virtual screen
14
16
  attr_accessor :resolution_x
17
+ # @return [Integer] y resolution of virtual screen
15
18
  attr_accessor :resolution_y
16
19
 
17
20
  def initialize(resolution_x = 1680, resolution_y = 1050)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OnlyofficeWebdriverWrapper
4
4
  module Version
5
- STRING = '0.3.2'
5
+ STRING = '0.5.0'
6
6
  end
7
7
  end
@@ -7,6 +7,7 @@ require 'selenium-webdriver'
7
7
  require 'uri'
8
8
  require_relative 'helpers/chrome_helper'
9
9
  require_relative 'helpers/firefox_helper'
10
+ require_relative 'webdriver/click_methods'
10
11
  require_relative 'webdriver/wait_until_methods'
11
12
  require_relative 'webdriver/webdriver_alert_helper'
12
13
  require_relative 'webdriver/webdriver_attributes_helper'
@@ -25,6 +26,7 @@ module OnlyofficeWebdriverWrapper
25
26
  # noinspection RubyTooManyMethodsInspection, RubyInstanceMethodNamingConvention, RubyParameterNamingConvention
26
27
  class WebDriver
27
28
  include ChromeHelper
29
+ include ClickMethods
28
30
  include FirefoxHelper
29
31
  include RubyHelper
30
32
  include WaitUntilMethods
@@ -42,13 +44,15 @@ module OnlyofficeWebdriverWrapper
42
44
  TIMEOUT_FILE_DOWNLOAD = 100
43
45
  # @return [Array, String] default switches for chrome
44
46
  attr_accessor :driver
47
+ # @return [Symbol] browser to use
45
48
  attr_accessor :browser
46
49
  # @return [True, False] is browser currently running
47
50
  attr_reader :browser_running
48
51
  # @return [Symbol] device of which we try to simulate, default - :desktop_linux
49
52
  attr_accessor :device
53
+ # @return [String] directory to which file is downloaded
50
54
  attr_accessor :download_directory
51
- attr_accessor :server_address
55
+ # @return [HeadlessHelper] headless wrapper
52
56
  attr_accessor :headless
53
57
  # @return [Net::HTTP::Proxy] connection proxy
54
58
  attr_accessor :proxy
@@ -72,21 +76,20 @@ module OnlyofficeWebdriverWrapper
72
76
  when :chrome
73
77
  @driver = start_chrome_driver
74
78
  else
75
- raise 'Unknown Browser: ' + browser.to_s
79
+ raise("Unknown Browser: #{browser}")
76
80
  end
77
81
  @browser_running = true
78
82
  end
79
83
 
80
84
  def open(url)
81
- url = 'http://' + url unless url.include?('http') || url.include?('file://')
85
+ url = "http://#{url}" unless url.include?('http') || url.include?('file://')
82
86
  loop do
83
- begin
84
- @driver.navigate.to url
85
- break
86
- rescue Timeout::Error
87
- @driver.navigate.refresh
88
- end
87
+ @driver.navigate.to url
88
+ break
89
+ rescue Timeout::Error
90
+ @driver.navigate.refresh
89
91
  end
92
+ sleep(1) # Correct wait for Page to init focus
90
93
  OnlyofficeLoggerHelper.log("Opened page: #{url}")
91
94
  end
92
95
 
@@ -124,20 +127,6 @@ module OnlyofficeWebdriverWrapper
124
127
  get_elements(array_elements).map { |current_element| get_text(current_element) }
125
128
  end
126
129
 
127
- def click(element)
128
- element.click
129
- end
130
-
131
- def click_and_wait(element_to_click, element_to_wait)
132
- element_to_click.click
133
- count = 0
134
- while !element_to_wait.present? && count < 30
135
- sleep 1
136
- count += 1
137
- end
138
- webdriver_error("click_and_wait: Wait for element: #{element_to_click} for 30 seconds") if count == 30
139
- end
140
-
141
130
  def select_from_list_elements(value, elements_value)
142
131
  index = get_element_index(value, elements_value)
143
132
  elements_value[index].click
@@ -172,27 +161,6 @@ module OnlyofficeWebdriverWrapper
172
161
  OnlyofficeLoggerHelper.log('Go back to previous page')
173
162
  end
174
163
 
175
- def self.host_name_by_full_url(full_url)
176
- uri = URI(full_url)
177
- uri.port == 80 || uri.port == 443 ? "#{uri.scheme}://#{uri.host}" : "#{uri.scheme}://#{uri.host}:#{uri.port}"
178
- end
179
-
180
- def get_host_name
181
- WebDriver.host_name_by_full_url(get_url)
182
- end
183
-
184
- def remove_event(event_name)
185
- execute_javascript("jQuery(document).unbind('#{event_name}');")
186
- end
187
-
188
- def remove_class_by_jquery(selector, class_name)
189
- execute_javascript("$(#{dom_element_by_xpath(selector)}).removeClass('#{class_name}');")
190
- end
191
-
192
- def add_class_by_jquery(selector, class_name)
193
- execute_javascript("$(#{dom_element_by_xpath(selector)}).addClass('#{class_name}');")
194
- end
195
-
196
164
  # Perform drag'n'drop action in one element (for example on big canvas area)
197
165
  # for drag'n'drop one whole element use 'drag_and_drop_by'
198
166
  # ==== Attributes
@@ -241,129 +209,22 @@ module OnlyofficeWebdriverWrapper
241
209
  def open_dropdown_selector(xpath_name, horizontal_shift = 30, vertical_shift = 0)
242
210
  element = get_element(xpath_name)
243
211
  if @browser == :firefox || @browser == :safari
244
- set_style_attribute(xpath_name + '/button', 'display', 'none')
212
+ set_style_attribute("#{xpath_name}/button", 'display', 'none')
245
213
  set_style_attribute(xpath_name, 'display', 'inline')
246
214
  element.click
247
- set_style_attribute(xpath_name + '/button', 'display', 'inline-block')
215
+ set_style_attribute("#{xpath_name}/button", 'display', 'inline-block')
248
216
  set_style_attribute(xpath_name, 'display', 'block')
249
217
  else
250
218
  @driver.action.move_to(element, horizontal_shift, vertical_shift).click.perform
251
219
  end
252
220
  end
253
221
 
254
- # Click on locator
255
- # @param count [Integer] count of clicks
256
- def click_on_locator(xpath_name, by_javascript = false, count: 1)
257
- element = get_element(xpath_name)
258
- return webdriver_error("Element with xpath: #{xpath_name} not found") if element.nil?
259
-
260
- if by_javascript
261
- execute_javascript("document.evaluate(\"#{xpath_name}\", document, null, XPathResult.ANY_TYPE, null).iterateNext().click();")
262
- else
263
- begin
264
- count.times { element.click }
265
- rescue Selenium::WebDriver::Error::ElementNotVisibleError
266
- webdriver_error("Selenium::WebDriver::Error::ElementNotVisibleError: element not visible for xpath: #{xpath_name}")
267
- rescue Exception => e
268
- webdriver_error(e.class, "UnknownError #{e.message} #{xpath_name}")
269
- end
270
- end
271
- end
272
-
273
- def left_mouse_click(xpath, x_coord, y_coord)
274
- @driver.action.move_to(get_element(xpath), x_coord.to_i, y_coord.to_i).click.perform
275
- end
276
-
277
- # Context click on locator
278
- # @param [String] xpath_name name of xpath to click
279
- def context_click_on_locator(xpath_name)
280
- wait_until_element_visible(xpath_name)
281
-
282
- element = @driver.find_element(:xpath, xpath_name)
283
- @driver.action.context_click(element).perform
284
- end
285
-
286
- def right_click(xpath_name)
287
- @driver.action.context_click(@driver.find_element(:xpath, xpath_name)).perform
288
- end
289
-
290
- def click_on_displayed(xpath_name)
291
- element = get_element_by_display(xpath_name)
292
- begin
293
- element.is_a?(Array) ? element.first.click : element.click
294
- rescue Exception => e
295
- webdriver_error("Exception #{e} in click_on_displayed(#{xpath_name})")
296
- end
297
- end
298
-
299
- def click_on_locator_coordinates(xpath_name, right_by, down_by)
300
- wait_until_element_visible(xpath_name)
301
- element = @driver.find_element(:xpath, xpath_name)
302
- @driver.action.move_to(element, right_by.to_i, down_by.to_i).perform
303
- @driver.action.move_to(element, right_by.to_i, down_by.to_i).click.perform
304
- end
305
-
306
- def right_click_on_locator_coordinates(xpath_name, right_by = nil, down_by = nil)
307
- wait_until_element_visible(xpath_name)
308
- element = @driver.find_element(:xpath, xpath_name)
309
- @driver.action.move_to(element, right_by.to_i, down_by.to_i).perform
310
- @driver.action.move_to(element, right_by.to_i, down_by.to_i).context_click.perform
311
- end
312
-
313
- def double_click(xpath_name)
314
- wait_until_element_visible(xpath_name)
315
- @driver.action.move_to(@driver.find_element(:xpath, xpath_name)).double_click.perform
316
- end
317
-
318
- def double_click_on_locator_coordinates(xpath_name, right_by, down_by)
319
- wait_until_element_visible(xpath_name)
320
- @driver.action.move_to(@driver.find_element(:xpath, xpath_name), right_by.to_i, down_by.to_i).double_click.perform
321
- end
322
-
323
222
  def action_on_locator_coordinates(xpath_name, right_by, down_by, action = :click, times = 1)
324
223
  wait_until_element_visible(xpath_name)
325
224
  element = @driver.find_element(:xpath, xpath_name)
326
225
  (0...times).inject(@driver.action.move_to(element, right_by.to_i, down_by.to_i)) { |acc, _elem| acc.send(action) }.perform
327
226
  end
328
227
 
329
- def click_on_one_of_several_by_text(xpath_several_elements, text_to_click)
330
- @driver.find_elements(:xpath, xpath_several_elements).each do |current_element|
331
- next unless text_to_click.to_s == current_element.attribute('innerHTML')
332
-
333
- begin
334
- current_element.click
335
- rescue Exception => e
336
- webdriver_error("Error in click_on_one_of_several_by_text(#{xpath_several_elements}, #{text_to_click}): #{e.message}")
337
- end
338
- return true
339
- end
340
- false
341
- end
342
-
343
- def click_on_one_of_several_by_display(xpath_several_elements)
344
- @driver.find_elements(:xpath, xpath_several_elements).each do |current_element|
345
- if current_element.displayed?
346
- current_element.click
347
- return true
348
- end
349
- end
350
- false
351
- end
352
-
353
- def click_on_one_of_several_by_parameter(xpath_several_elements, parameter_name, parameter_value)
354
- @driver.find_elements(:xpath, xpath_several_elements).each do |current_element|
355
- if current_element.attribute(parameter_name).include? parameter_value
356
- current_element.click
357
- return true
358
- end
359
- end
360
- false
361
- end
362
-
363
- def click_on_one_of_several_xpath_by_number(xpath, number_of_element)
364
- click_on_locator("(#{xpath})[#{number_of_element}]")
365
- end
366
-
367
228
  def move_to_element(element)
368
229
  element = get_element(element) if element.is_a?(String)
369
230
  @driver.action.move_to(element).perform
@@ -381,9 +242,10 @@ module OnlyofficeWebdriverWrapper
381
242
  end
382
243
 
383
244
  def element_present?(xpath_name)
384
- if xpath_name.is_a?(PageObject::Elements::Element)
245
+ case xpath_name
246
+ when PageObject::Elements::Element
385
247
  xpath_name.present?
386
- elsif xpath_name.is_a?(Selenium::WebDriver::Element)
248
+ when Selenium::WebDriver::Element
387
249
  xpath_name.displayed?
388
250
  else
389
251
  @driver.find_element(:xpath, xpath_name)
@@ -470,14 +332,12 @@ module OnlyofficeWebdriverWrapper
470
332
  # @param [String] xpath_name name of current xpath
471
333
  def select_frame(xpath_name = '//iframe', count_of_frames = 1)
472
334
  (0...count_of_frames).each do
473
- begin
474
- frame = @driver.find_element(:xpath, xpath_name)
475
- @driver.switch_to.frame frame
476
- rescue Selenium::WebDriver::Error::NoSuchElementError
477
- OnlyofficeLoggerHelper.log('Raise NoSuchElementError in the select_frame method')
478
- rescue Exception => e
479
- webdriver_error("Raise unkwnown exception: #{e}")
480
- end
335
+ frame = @driver.find_element(:xpath, xpath_name)
336
+ @driver.switch_to.frame frame
337
+ rescue Selenium::WebDriver::Error::NoSuchElementError
338
+ OnlyofficeLoggerHelper.log('Raise NoSuchElementError in the select_frame method')
339
+ rescue Exception => e
340
+ webdriver_error("Raise unkwnown exception: #{e}")
481
341
  end
482
342
  end
483
343
 
@@ -509,16 +369,6 @@ module OnlyofficeWebdriverWrapper
509
369
  @driver.find_elements(:xpath, xpath_several_elements).map { |element| element.text unless element.text == '' }.compact
510
370
  end
511
371
 
512
- def set_parameter(xpath, attribute, attribute_value)
513
- execute_javascript("document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext()." \
514
- "#{attribute}=\"#{attribute_value}\";")
515
- end
516
-
517
- def remove_attribute(xpath, attribute)
518
- execute_javascript("document.evaluate(\"#{xpath}\",document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)." \
519
- "singleNodeValue.removeAttribute('#{attribute}');")
520
- end
521
-
522
372
  def select_combo_box(xpath_name, select_value, select_by = :value)
523
373
  wait_until_element_visible(xpath_name)
524
374
  option = Selenium::WebDriver::Support::Select.new(get_element(xpath_name))
@@ -558,11 +408,6 @@ module OnlyofficeWebdriverWrapper
558
408
  full_file_name
559
409
  end
560
410
 
561
- def service_unavailable?
562
- source = get_page_source
563
- source.include?('Error 503')
564
- end
565
-
566
411
  # Perform cleanup if something went wrong during tests
567
412
  # @param forced [True, False] should cleanup run in all cases
568
413
  def self.clean_up(forced = false)
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeWebdriverWrapper
4
+ # Method to perform different clicks
5
+ module ClickMethods
6
+ # Click on specified element
7
+ # @param element [Selenium::WebDriver::Element] element to click
8
+ # @return [nil] nothing
9
+ def click(element)
10
+ element.click
11
+ end
12
+
13
+ # Click on locator
14
+ # @param xpath_name [String] xpath to click
15
+ # @param by_javascript [True, False] should be clicked by javascript
16
+ # @param count [Integer] count of clicks
17
+ def click_on_locator(xpath_name, by_javascript = false, count: 1)
18
+ element = get_element(xpath_name)
19
+ return webdriver_error("Element with xpath: #{xpath_name} not found") if element.nil?
20
+
21
+ if by_javascript
22
+ execute_javascript("document.evaluate(\"#{xpath_name}\", document, null, XPathResult.ANY_TYPE, null).iterateNext().click();")
23
+ else
24
+ begin
25
+ count.times { element.click }
26
+ rescue Selenium::WebDriver::Error::ElementNotVisibleError => e
27
+ webdriver_error(e.class, "Selenium::WebDriver::Error::ElementNotVisibleError: element not visible for xpath: #{xpath_name}")
28
+ rescue Exception => e
29
+ webdriver_error(e.class, "UnknownError #{e.message} #{xpath_name}")
30
+ end
31
+ end
32
+ end
33
+
34
+ # Click on one of several which displayed
35
+ # @param xpath_name [String] xpath to find element
36
+ # @return [nil]
37
+ def click_on_displayed(xpath_name)
38
+ element = get_element_by_display(xpath_name)
39
+ begin
40
+ element.is_a?(Array) ? element.first.click : element.click
41
+ rescue Exception => e
42
+ webdriver_error(e.class, "Exception #{e} in click_on_displayed(#{xpath_name})")
43
+ end
44
+ end
45
+
46
+ # Click on locator by coordinates
47
+ # @param xpath_name [String] xpath to click
48
+ # @param right_by [Integer] shift to right
49
+ # @param down_by [Integer] shift to bottom
50
+ # @return [nil]
51
+ def click_on_locator_coordinates(xpath_name, right_by, down_by)
52
+ wait_until_element_visible(xpath_name)
53
+ element = @driver.find_element(:xpath, xpath_name)
54
+ @driver.action.move_to(element, right_by.to_i, down_by.to_i).perform
55
+ @driver.action.move_to(element, right_by.to_i, down_by.to_i).click.perform
56
+ end
57
+
58
+ # Click on one of several which displayed
59
+ # @param xpath_several_elements [String] xpath to find element
60
+ # @return [True, False] true if click successful, false if not found
61
+ def click_on_one_of_several_by_display(xpath_several_elements)
62
+ @driver.find_elements(:xpath, xpath_several_elements).each do |current_element|
63
+ if current_element.displayed?
64
+ current_element.click
65
+ return true
66
+ end
67
+ end
68
+ false
69
+ end
70
+
71
+ # Click on one of several xpath filtered by parameter and value
72
+ # @param xpath_several_elements [String] xpath to select
73
+ # @param parameter_name [String] parameter name
74
+ # @param parameter_value [String] parameter value
75
+ # @return [True, False] true if click successful, false if not found
76
+ def click_on_one_of_several_by_parameter(xpath_several_elements, parameter_name, parameter_value)
77
+ @driver.find_elements(:xpath, xpath_several_elements).each do |current_element|
78
+ if current_element.attribute(parameter_name).include? parameter_value
79
+ current_element.click
80
+ return true
81
+ end
82
+ end
83
+ false
84
+ end
85
+
86
+ # Perform right click on xpath
87
+ # @param xpath_name [String] xpath to click
88
+ # @return [nil]
89
+ def right_click(xpath_name)
90
+ wait_until_element_visible(xpath_name)
91
+
92
+ @driver.action.context_click(@driver.find_element(:xpath, xpath_name)).perform
93
+ end
94
+
95
+ # Perform right click on locator with specified coordinates
96
+ # @param xpath_name [String] xpath to click
97
+ # @param right_by [Integer] shift to right
98
+ # @param down_by [Integer] shift to bottom
99
+ # @return [nil]
100
+ def right_click_on_locator_coordinates(xpath_name, right_by = nil, down_by = nil)
101
+ wait_until_element_visible(xpath_name)
102
+ element = @driver.find_element(:xpath, xpath_name)
103
+ @driver.action.move_to(element, right_by.to_i, down_by.to_i).perform
104
+ @driver.action.move_to(element, right_by.to_i, down_by.to_i).context_click.perform
105
+ end
106
+
107
+ # Perform double_click on element
108
+ # @param xpath_name [String] xpath to click
109
+ # @return [nil]
110
+ def double_click(xpath_name)
111
+ wait_until_element_visible(xpath_name)
112
+ @driver.action.move_to(@driver.find_element(:xpath, xpath_name)).double_click.perform
113
+ end
114
+
115
+ # Perform double_click on specified coordinates
116
+ # @param xpath_name [String] xpath to click
117
+ # @param right_by [Integer] shift to right
118
+ # @param down_by [Integer] shift to bottom
119
+ # @return [nil]
120
+ def double_click_on_locator_coordinates(xpath_name, right_by, down_by)
121
+ wait_until_element_visible(xpath_name)
122
+ @driver.action.move_to(@driver.find_element(:xpath, xpath_name), right_by.to_i, down_by.to_i).double_click.perform
123
+ end
124
+ end
125
+ end
@@ -40,5 +40,24 @@ module OnlyofficeWebdriverWrapper
40
40
  end
41
41
  0
42
42
  end
43
+
44
+ # Set element attribute
45
+ # @param xpath [String] element to select
46
+ # @param attribute [String] attribute to set
47
+ # @param attribute_value [String] value of attribute
48
+ # @return [String] result of execution
49
+ def set_attribute(xpath, attribute, attribute_value)
50
+ execute_javascript("#{dom_element_by_xpath(xpath)}.#{attribute}=\"#{attribute_value}\";")
51
+ end
52
+
53
+ alias set_parameter set_attribute
54
+
55
+ # Remove attribute of element
56
+ # @param xpath [String] xpath of element
57
+ # @param attribute [String] attribute to remove
58
+ # @return [String] result of execution
59
+ def remove_attribute(xpath, attribute)
60
+ execute_javascript("#{dom_element_by_xpath(xpath)}.removeAttribute('#{attribute}');")
61
+ end
43
62
  end
44
63
  end
@@ -28,8 +28,13 @@ module OnlyofficeWebdriverWrapper
28
28
  execute_javascript("document.evaluate('#{xpath_name}', document, null, XPathResult.ANY_TYPE, null).iterateNext().value=\"#{escaped_text}\";")
29
29
  end
30
30
 
31
+ # Get text in object by xpath
32
+ # @param xpath [String] xpath to get text
33
+ # @return [String] text in xpath
31
34
  def get_text_by_js(xpath)
32
- execute_javascript("return document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext().textContent")
35
+ text = execute_javascript("return #{dom_element_by_xpath(xpath)}.textContent")
36
+ text = execute_javascript("return #{dom_element_by_xpath(xpath)}.value") if text.empty?
37
+ text
33
38
  end
34
39
 
35
40
  # Calculate object size using Javascript
@@ -10,26 +10,23 @@ module OnlyofficeWebdriverWrapper
10
10
  nil
11
11
  end
12
12
 
13
- def set_style_parameter(xpath, attribute, attribute_value)
14
- execute_javascript("document.evaluate(\"#{xpath.tr('"', "'")}\",document, null, XPathResult.ANY_TYPE, null ).iterateNext()." \
15
- "style.#{attribute}=\"#{attribute_value}\"")
16
- end
17
-
13
+ # Set style attribute value of element
14
+ # @param xpath [String] xpath to set
15
+ # @param attribute [String] style param to set
16
+ # @param attribute_value [String] attribute value to set
17
+ # @return [String] result of execution
18
18
  def set_style_attribute(xpath, attribute, attribute_value)
19
- execute_javascript("document.evaluate('#{xpath}',document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)." \
20
- "singleNodeValue.style.#{attribute}=\"#{attribute_value}\"")
19
+ execute_javascript("#{dom_element_by_xpath(xpath)}.style.#{attribute}=\"#{attribute_value}\"")
21
20
  end
22
21
 
22
+ alias set_style_parameter set_style_attribute
23
+
23
24
  def set_style_show_by_xpath(xpath, move_to_center = false)
24
- xpath = xpath.tr("'", '"')
25
- execute_javascript('document.evaluate( \'' + xpath.to_s +
26
- '\' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.style.display = "block";')
25
+ execute_javascript("#{dom_element_by_xpath(xpath)}.style.display = 'block';")
27
26
  return unless move_to_center
28
27
 
29
- execute_javascript('document.evaluate( \'' + xpath.to_s +
30
- '\' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.style.left = "410px";')
31
- execute_javascript('document.evaluate( \'' + xpath.to_s +
32
- '\' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.style.top = "260px";')
28
+ execute_javascript("#{dom_element_by_xpath(xpath)}.style.left = '410px';")
29
+ execute_javascript("#{dom_element_by_xpath(xpath)}.style.top = '260px';")
33
30
  end
34
31
  end
35
32
  end
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: 0.3.2
4
+ version: 0.5.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: 2020-06-30 00:00:00.000000000 Z
14
+ date: 2020-08-26 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: headless
@@ -31,58 +31,58 @@ 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.1'
36
+ version: 0.3.0
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.1'
43
+ version: 0.3.0
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: onlyoffice_logger_helper
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - "~>"
48
+ - - '='
49
49
  - !ruby/object:Gem::Version
50
- version: '1'
50
+ version: 1.0.3
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - "~>"
55
+ - - '='
56
56
  - !ruby/object:Gem::Version
57
- version: '1'
57
+ version: 1.0.3
58
58
  - !ruby/object:Gem::Dependency
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.1'
64
+ version: 0.1.2
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - "~>"
69
+ - - '='
70
70
  - !ruby/object:Gem::Version
71
- version: '0.1'
71
+ version: 0.1.2
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: page-object
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
- - - "~>"
76
+ - - '='
77
77
  - !ruby/object:Gem::Version
78
- version: '2'
78
+ version: 2.2.6
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - "~>"
83
+ - - '='
84
84
  - !ruby/object:Gem::Version
85
- version: '2'
85
+ version: 2.2.6
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: selenium-webdriver
88
88
  requirement: !ruby/object:Gem::Requirement
@@ -101,30 +101,114 @@ dependencies:
101
101
  name: watir
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - "~>"
104
+ - - '='
105
105
  - !ruby/object:Gem::Version
106
- version: '6'
106
+ version: 6.16.5
107
107
  type: :runtime
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - "~>"
111
+ - - '='
112
+ - !ruby/object:Gem::Version
113
+ version: 6.16.5
114
+ - !ruby/object:Gem::Dependency
115
+ name: codecov
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - '='
119
+ - !ruby/object:Gem::Version
120
+ version: 0.2.8
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - '='
126
+ - !ruby/object:Gem::Version
127
+ version: 0.2.8
128
+ - !ruby/object:Gem::Dependency
129
+ name: overcommit
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - '='
133
+ - !ruby/object:Gem::Version
134
+ version: 0.55.0
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - '='
112
140
  - !ruby/object:Gem::Version
113
- version: '6'
141
+ version: 0.55.0
114
142
  - !ruby/object:Gem::Dependency
115
143
  name: rake
116
144
  requirement: !ruby/object:Gem::Requirement
117
145
  requirements:
118
- - - "~>"
146
+ - - '='
119
147
  - !ruby/object:Gem::Version
120
- version: '13.0'
148
+ version: 13.0.1
121
149
  type: :development
122
150
  prerelease: false
123
151
  version_requirements: !ruby/object:Gem::Requirement
124
152
  requirements:
125
- - - "~>"
153
+ - - '='
154
+ - !ruby/object:Gem::Version
155
+ version: 13.0.1
156
+ - !ruby/object:Gem::Dependency
157
+ name: rspec
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - '='
126
161
  - !ruby/object:Gem::Version
127
- version: '13.0'
162
+ version: 3.9.0
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - '='
168
+ - !ruby/object:Gem::Version
169
+ version: 3.9.0
170
+ - !ruby/object:Gem::Dependency
171
+ name: rubocop
172
+ requirement: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - '='
175
+ - !ruby/object:Gem::Version
176
+ version: 0.89.1
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - '='
182
+ - !ruby/object:Gem::Version
183
+ version: 0.89.1
184
+ - !ruby/object:Gem::Dependency
185
+ name: rubocop-performance
186
+ requirement: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - '='
189
+ - !ruby/object:Gem::Version
190
+ version: 1.7.1
191
+ type: :development
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - '='
196
+ - !ruby/object:Gem::Version
197
+ version: 1.7.1
198
+ - !ruby/object:Gem::Dependency
199
+ name: rubocop-rspec
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - '='
203
+ - !ruby/object:Gem::Version
204
+ version: 1.43.2
205
+ type: :development
206
+ prerelease: false
207
+ version_requirements: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - '='
210
+ - !ruby/object:Gem::Version
211
+ version: 1.43.2
128
212
  description: ONLYOFFICE Webdriver Wrapper Gem. Used in QA
129
213
  email:
130
214
  - shockwavenn@gmail.com
@@ -148,6 +232,7 @@ files:
148
232
  - lib/onlyoffice_webdriver_wrapper/name.rb
149
233
  - lib/onlyoffice_webdriver_wrapper/version.rb
150
234
  - lib/onlyoffice_webdriver_wrapper/webdriver.rb
235
+ - lib/onlyoffice_webdriver_wrapper/webdriver/click_methods.rb
151
236
  - lib/onlyoffice_webdriver_wrapper/webdriver/wait_until_methods.rb
152
237
  - lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_alert_helper.rb
153
238
  - lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_attributes_helper.rb
@@ -178,14 +263,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
178
263
  requirements:
179
264
  - - ">="
180
265
  - !ruby/object:Gem::Version
181
- version: '0'
266
+ version: '2.5'
182
267
  required_rubygems_version: !ruby/object:Gem::Requirement
183
268
  requirements:
184
269
  - - ">="
185
270
  - !ruby/object:Gem::Version
186
271
  version: '0'
187
272
  requirements: []
188
- rubygems_version: 3.1.2
273
+ rubygems_version: 3.1.4
189
274
  signing_key:
190
275
  specification_version: 4
191
276
  summary: ONLYOFFICE Webdriver Wrapper Gem