onlyoffice_webdriver_wrapper 1.6.0 → 1.7.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 +4 -4
- data/lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/{chromedriver_linux_100 → chromedriver_linux_103} +0 -0
- data/lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_mac +0 -0
- data/lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/{headless_screenshot_patch.rb → headless_patch.rb} +23 -0
- data/lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb +1 -1
- data/lib/onlyoffice_webdriver_wrapper/version.rb +1 -1
- data/lib/onlyoffice_webdriver_wrapper/webdriver/click_methods.rb +6 -4
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_move_cursor_methods.rb +23 -12
- data/lib/onlyoffice_webdriver_wrapper/webdriver/webdriver_tab_helper.rb +4 -3
- data/lib/onlyoffice_webdriver_wrapper/webdriver.rb +9 -4
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6dc61124365371ac4e24646ae4333ae1a590a6e2b0cf8c477c093e335e5d249f
|
4
|
+
data.tar.gz: cba7d248075d58ebc1249166f684a92ca695b359b3e2e2472e3cc1cbe2ea84da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc5c7c14c73b7ed444ee5f5f1278867199b13b5b2b6a30e9cd0e0018c0456e79d8a029cc7e4a5ce578588e2af4a9f63ad0f890e337338bc9b634d3212931d71a
|
7
|
+
data.tar.gz: 6283edb3f3b215c3c6aea865e7aaaa9ed2908374a2325d1eb7eda334e72325b07c9aa6a93929b809f895c7e28b9aba1676808ca79dba5329cb8b17a012deef0b
|
Binary file
|
data/lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_mac
CHANGED
Binary file
|
@@ -21,3 +21,26 @@ class Headless
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
24
|
+
|
25
|
+
# Until https://github.com/leonid-shevtsov/headless/pull/106
|
26
|
+
# is released in stable version
|
27
|
+
class Headless
|
28
|
+
# Class for handling video records
|
29
|
+
class VideoRecorder
|
30
|
+
# Stop recording and save it
|
31
|
+
# @param [String] path to save
|
32
|
+
# @retunr [nil, String] path to result file or nil if error
|
33
|
+
def stop_and_save(path)
|
34
|
+
CliUtil.kill_process(@pid_file_path, :wait => true)
|
35
|
+
if File.exist? @tmp_file_path
|
36
|
+
begin
|
37
|
+
FileUtils.mkdir_p(File.dirname(path))
|
38
|
+
FileUtils.mv(@tmp_file_path, path)
|
39
|
+
rescue Errno::EINVAL
|
40
|
+
nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require_relative 'headless_helper/real_display_tools'
|
4
4
|
require_relative 'headless_helper/ruby_helper'
|
5
5
|
require 'headless'
|
6
|
-
require_relative 'headless_helper/
|
6
|
+
require_relative 'headless_helper/headless_patch'
|
7
7
|
require_relative 'headless_helper/headless_video_recorder'
|
8
8
|
|
9
9
|
module OnlyofficeWebdriverWrapper
|
@@ -51,8 +51,9 @@ module OnlyofficeWebdriverWrapper
|
|
51
51
|
def click_on_locator_coordinates(xpath_name, right_by, down_by)
|
52
52
|
wait_until_element_visible(xpath_name)
|
53
53
|
element = @driver.find_element(:xpath, xpath_name)
|
54
|
-
|
55
|
-
@driver.action.move_to(element, right_by.to_i, down_by.to_i).
|
54
|
+
shift_to_zero = move_to_shift_to_top_left(xpath_name)
|
55
|
+
@driver.action.move_to(element, right_by.to_i - shift_to_zero.x, down_by.to_i - shift_to_zero.y).perform
|
56
|
+
@driver.action.move_to(element, right_by.to_i - shift_to_zero.x, down_by.to_i - shift_to_zero.y).click.perform
|
56
57
|
end
|
57
58
|
|
58
59
|
# Click on one of several which displayed
|
@@ -100,8 +101,9 @@ module OnlyofficeWebdriverWrapper
|
|
100
101
|
def right_click_on_locator_coordinates(xpath_name, right_by = nil, down_by = nil)
|
101
102
|
wait_until_element_visible(xpath_name)
|
102
103
|
element = @driver.find_element(:xpath, xpath_name)
|
103
|
-
|
104
|
-
@driver.action.move_to(element, right_by.to_i, down_by.to_i).
|
104
|
+
shift_to_zero = move_to_shift_to_top_left(xpath_name)
|
105
|
+
@driver.action.move_to(element, right_by.to_i - shift_to_zero.x, down_by.to_i - shift_to_zero.y).perform
|
106
|
+
@driver.action.move_to(element, right_by.to_i - shift_to_zero.x, down_by.to_i - shift_to_zero.y).context_click.perform
|
105
107
|
end
|
106
108
|
|
107
109
|
# Perform double_click on element
|
@@ -15,9 +15,10 @@ module OnlyofficeWebdriverWrapper
|
|
15
15
|
# * +mouse_release+ - release mouse after move
|
16
16
|
def drag_and_drop(xpath, x1, y1, x2, y2, mouse_release: true)
|
17
17
|
canvas = get_element(xpath)
|
18
|
-
|
18
|
+
shift_to_zero = move_to_shift_to_top_left(xpath)
|
19
19
|
move_action = @driver.action
|
20
|
-
.move_to(canvas, x1.to_i
|
20
|
+
.move_to(canvas, x1.to_i - shift_to_zero.x,
|
21
|
+
y1.to_i - shift_to_zero.y)
|
21
22
|
.click_and_hold
|
22
23
|
.move_by(x2, y2)
|
23
24
|
move_action = move_action.release if mouse_release
|
@@ -33,15 +34,10 @@ module OnlyofficeWebdriverWrapper
|
|
33
34
|
# * +right_by+ - shift vector x coordinate
|
34
35
|
# * +down_by+ - shift vector y coordinate
|
35
36
|
def drag_and_drop_by(source, right_by, down_by = 0)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
# @param [String, Selenium::WebDriver::Element] element xpath or webdriver element
|
41
|
-
# @return [nil]
|
42
|
-
def move_to_element(element)
|
43
|
-
element = get_element(element) if element.is_a?(String)
|
44
|
-
@driver.action.move_to(element).perform
|
37
|
+
shift_to_zero = move_to_shift_to_top_left(source)
|
38
|
+
@driver.action.drag_and_drop_by(get_element(source),
|
39
|
+
right_by - shift_to_zero.x,
|
40
|
+
down_by - shift_to_zero.y).perform
|
45
41
|
end
|
46
42
|
|
47
43
|
# Move cursor to element
|
@@ -60,7 +56,22 @@ module OnlyofficeWebdriverWrapper
|
|
60
56
|
# @return [nil]
|
61
57
|
def mouse_over(xpath_name, x_coordinate = 0, y_coordinate = 0)
|
62
58
|
wait_until_element_present(xpath_name)
|
63
|
-
|
59
|
+
shift_to_zero = move_to_shift_to_top_left(xpath_name)
|
60
|
+
@driver.action.move_to(@driver.find_element(:xpath, xpath_name),
|
61
|
+
x_coordinate.to_i - shift_to_zero.x,
|
62
|
+
y_coordinate.to_i - shift_to_zero.y).perform
|
63
|
+
end
|
64
|
+
|
65
|
+
# Since v4.3.0 of `webdriver` gem `move_to` method is moving
|
66
|
+
# from the center of the element
|
67
|
+
# Add additional negative shift if this version is used
|
68
|
+
def move_to_shift_to_top_left(xpath)
|
69
|
+
if Gem.loaded_specs['selenium-webdriver'].version >= Gem::Version.new('4.3.0')
|
70
|
+
element_size = element_size_by_js(xpath)
|
71
|
+
Dimensions.new(element_size.x / 2, element_size.y / 2)
|
72
|
+
else
|
73
|
+
Dimensions.new(0, 0)
|
74
|
+
end
|
64
75
|
end
|
65
76
|
end
|
66
77
|
end
|
@@ -22,16 +22,17 @@ module OnlyofficeWebdriverWrapper
|
|
22
22
|
end
|
23
23
|
|
24
24
|
# Switch to popup window
|
25
|
+
# @param popup_appear_timeout [Integer] how much time to wait for popup window
|
25
26
|
# @param after_switch_timeout [Integer] wait after switch to window
|
26
27
|
# non-zero to workaround bug with page load hanging up after switch
|
27
28
|
# @return [void]
|
28
|
-
def switch_to_popup(after_switch_timeout: 3)
|
29
|
+
def switch_to_popup(after_switch_timeout: 3, popup_appear_timeout: 30)
|
29
30
|
counter = 0
|
30
|
-
while tab_count < 2 && counter <
|
31
|
+
while tab_count < 2 && counter < popup_appear_timeout
|
31
32
|
sleep 1
|
32
33
|
counter += 1
|
33
34
|
end
|
34
|
-
webdriver_error('switch_to_popup: Popup window not found') if counter >=
|
35
|
+
webdriver_error('switch_to_popup: Popup window not found') if counter >= popup_appear_timeout
|
35
36
|
list_of_handlers = @driver.window_handles
|
36
37
|
last_window_handler = list_of_handlers.last
|
37
38
|
@driver.switch_to.window(last_window_handler)
|
@@ -168,7 +168,8 @@ module OnlyofficeWebdriverWrapper
|
|
168
168
|
set_style_attribute("#{xpath_name}/button", 'display', 'inline-block')
|
169
169
|
set_style_attribute(xpath_name, 'display', 'block')
|
170
170
|
else
|
171
|
-
|
171
|
+
shift_to_zero = move_to_shift_to_top_left(xpath_name)
|
172
|
+
@driver.action.move_to(element, horizontal_shift - shift_to_zero.x, vertical_shift - shift_to_zero.y).click.perform
|
172
173
|
end
|
173
174
|
end
|
174
175
|
|
@@ -182,7 +183,10 @@ module OnlyofficeWebdriverWrapper
|
|
182
183
|
def action_on_locator_coordinates(xpath_name, right_by, down_by, action = :click, times = 1)
|
183
184
|
wait_until_element_visible(xpath_name)
|
184
185
|
element = @driver.find_element(:xpath, xpath_name)
|
185
|
-
|
186
|
+
shift_to_zero = move_to_shift_to_top_left(xpath_name)
|
187
|
+
(0...times).inject(@driver.action.move_to(element,
|
188
|
+
right_by.to_i - shift_to_zero.x,
|
189
|
+
down_by.to_i - shift_to_zero.y)) { |acc, _elem| acc.send(action) }.perform
|
186
190
|
end
|
187
191
|
|
188
192
|
# Check if element present on page
|
@@ -254,7 +258,8 @@ module OnlyofficeWebdriverWrapper
|
|
254
258
|
|
255
259
|
begin
|
256
260
|
visible = element.displayed?
|
257
|
-
rescue Exception
|
261
|
+
rescue Exception => e
|
262
|
+
OnlyofficeLoggerHelper.log("Element #{xpath_name} is not visible because of: #{e.message}")
|
258
263
|
visible = false
|
259
264
|
end
|
260
265
|
visible
|
@@ -295,7 +300,7 @@ module OnlyofficeWebdriverWrapper
|
|
295
300
|
# @param [String] xpath_several_elements to find objects
|
296
301
|
# @return [Array<String>] text of those elements
|
297
302
|
def get_text_of_several_elements(xpath_several_elements)
|
298
|
-
@driver.find_elements(:xpath, xpath_several_elements).
|
303
|
+
@driver.find_elements(:xpath, xpath_several_elements).filter_map { |element| element.text unless element.text == '' }
|
299
304
|
end
|
300
305
|
|
301
306
|
# Select value of combo box
|
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.
|
4
|
+
version: 1.7.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-
|
14
|
+
date: 2022-06-24 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: headless
|
@@ -275,14 +275,14 @@ 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_100
|
279
278
|
- lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_linux_101
|
280
279
|
- lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_linux_102
|
280
|
+
- lib/onlyoffice_webdriver_wrapper/helpers/chrome_helper/chromedriver_bin/chromedriver_linux_103
|
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
|
284
284
|
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper.rb
|
285
|
-
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/
|
285
|
+
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/headless_patch.rb
|
286
286
|
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/headless_video_recorder.rb
|
287
287
|
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/real_display_tools.rb
|
288
288
|
- lib/onlyoffice_webdriver_wrapper/helpers/headless_helper/ruby_helper.rb
|
@@ -325,14 +325,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
325
325
|
requirements:
|
326
326
|
- - ">="
|
327
327
|
- !ruby/object:Gem::Version
|
328
|
-
version: '2.
|
328
|
+
version: '2.7'
|
329
329
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
330
330
|
requirements:
|
331
331
|
- - ">="
|
332
332
|
- !ruby/object:Gem::Version
|
333
333
|
version: '0'
|
334
334
|
requirements: []
|
335
|
-
rubygems_version: 3.3.
|
335
|
+
rubygems_version: 3.3.16
|
336
336
|
signing_key:
|
337
337
|
specification_version: 4
|
338
338
|
summary: ONLYOFFICE Webdriver Wrapper Gem
|